• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[神梦] 【每日一题】模糊坐标 - 2022.11.07 [复制链接]

1#
题目描述

我们有一些二维坐标,如 "(1, 3)" 或 "(2, 0.5)",然后我们移除所有逗号,小数点和空格,得到一个字符串S。返回所有可能的原始字符串到一个列表中。
原始的坐标表示法不会存在多余的零,所以不会出现类似于"00", "0.0", "0.00", "1.0", "001", "00.01"或一些其他更小的数来表示坐标。此外,一个小数点前至少存在一个数,所以也不会出现“.1”形式的数字。
最后返回的列表可以是任意顺序的。而且注意返回的两个数字中间(逗号之后)都有一个空格。
提示:
4 <= S.length <= 12
S[0] = "(", S[S.length - 1] = ")", 且字符串 S 中的其他元素都是数字。


【示例】1:
输入: "(123)"
输出: ["(1, 23)", "(12, 3)", "(1.2, 3)", "(1, 2.3)"]

【示例】2:
输入: "(00011)"
输出: ["(0.001, 1)", "(0, 0.011)"]
解释:
0.0, 00, 0001 或 00.01 是不被允许的。

【示例】3:
输入: "(0123)"
输出: ["(0, 123)", "(0, 12.3)", "(0, 1.23)", "(0.1, 23)", "(0.1, 2.3)", "(0.12, 3)"]

【示例】4:
输入: "(100)"
输出: [(10, 0)]
解释:
1.0 是不被允许的。


题目难度:中等
题目来源:ambiguous-coordinates | leetcode
题目交流: 584781753
  1. Import "SmAssert.dll"

  2. VBSBegin
  3.     ' 冒泡排序数组
  4.     Function Sort(ByVal Arr)
  5.         Dim i
  6.         Dim j
  7.         Dim tmp
  8.         
  9.         For i = 0 To UBound(Arr) - 1
  10.             For j = 0 To UBound(Arr) - i - 1
  11.                 If Arr(j) > Arr(j + 1) Then
  12.                     tmp = Arr(j + 1)
  13.                     Arr(j + 1) = Arr(j)
  14.                     Arr(j) = tmp
  15.                 End If
  16.             Next
  17.         Next
  18.         Sort = Arr
  19.     End Function
  20. VBSEnd
  21. Function 模糊坐标(字符串)
  22.     // 您的代码写在这里
  23. End Function


  24. SmAssert.That Sort(模糊坐标("(123)")),    "=", Sort(Array("(1, 23)", "(12, 3)", "(1.2, 3)", "(1, 2.3)"))
  25. SmAssert.That Sort(模糊坐标("(00011)")), "=", Sort(Array("(0.001, 1)", "(0, 0.011)"))
  26. SmAssert.That Sort(模糊坐标("(0123)")),    "=", Sort(Array("(0, 123)", "(0, 12.3)", "(0, 1.23)", "(0.1, 23)", "(0.1, 2.3)", "(0.12, 3)"))
  27. SmAssert.That Sort(模糊坐标("(100)")),    "=", Sort(Array("(10, 0)"))
复制代码

参考题解

  1. Import "SmAssert.dll"

  2. VBSBegin
  3.     ' 冒泡排序数组
  4.     Function Sort(ByVal Arr)
  5.         Dim i
  6.         Dim j
  7.         Dim tmp
  8.         
  9.         For i = 0 To UBound(Arr) - 1
  10.             For j = 0 To UBound(Arr) - i - 1
  11.                 If Arr(j) > Arr(j + 1) Then
  12.                     tmp = Arr(j + 1)
  13.                     Arr(j + 1) = Arr(j)
  14.                     Arr(j) = tmp
  15.                 End If
  16.             Next
  17.         Next
  18.         Sort = Arr
  19.     End Function
  20.     ' 字符串切片
  21.     Function Slice(ByVal str, ByVal iStart, ByVal iEnd)
  22.         If iEnd = - 1 Then
  23.             iEnd = Len(str)
  24.         End If
  25.         Slice = Mid(str, iStart + 1, iEnd - iStart)
  26.     End Function
  27.     ' 获取合法坐标
  28.     Function get_pos(ByVal s)
  29.         Dim pos
  30.         Dim p
  31.         
  32.         pos = Array()
  33.         If Left(s, 1) <> "0" Or s = "0" Then
  34.             Redim pos(UBound(pos) + 1)
  35.             pos(UBound(pos)) = s
  36.         End If
  37.         For p = 1 To Len(s) - 1
  38.             If (p <> 1 And Left(s, 1) = "0") Or Right(s, 1) = "0" Then
  39.                 ' 不合法坐标
  40.             Else
  41.                 Redim Preserve pos(UBound(pos) + 1)
  42.                 pos(UBound(pos)) = Slice(s, 0, p) + "." + Slice(s, p, - 1 )
  43.             End If
  44.         Next
  45.         get_pos = pos
  46.     End Function
  47. VBSEnd
  48. Function 模糊坐标(字符串)
  49.     
  50.     '【作者】:神梦无痕
  51.     '【QQ】:1042207232
  52.     '【Q群】:584781753
  53.     
  54.     Dim n    'As Long
  55.     Dim l    'As Long
  56.     Dim lt    'As Variant()
  57.     Dim rt    'As Variant()
  58.     Dim i    'As Long
  59.     Dim j    'As Long

  60.     n = Len(字符串) - 2
  61.     res = Array()
  62.     字符串 = Mid(字符串, 2, n)
  63.     For l = 1 To n - 1
  64.         lt = get_pos(Slice(字符串, 0, l))
  65.         If UBound(lt) = -1 Then
  66.             Goto continue
  67.         End If
  68.         rt = get_pos(Slice(字符串, l, -1))
  69.         If UBound(rt) = -1 Then
  70.             Goto continue
  71.         End If
  72.         For Each i In lt
  73.             For Each j In rt
  74.                 Redim Preserve res(UBound(res) + 1)
  75.                 res(UBound(res)) = "(" + i + ", " + j + ")"
  76.             Next
  77.         Next
  78.         Rem continue
  79.     Next
  80.     模糊坐标 = res
  81. End Function


  82. SmAssert.That Sort(模糊坐标("(123)")),    "=", Sort(Array("(1, 23)", "(12, 3)", "(1.2, 3)", "(1, 2.3)"))
  83. SmAssert.That Sort(模糊坐标("(00011)")), "=", Sort(Array("(0.001, 1)", "(0, 0.011)"))
  84. SmAssert.That Sort(模糊坐标("(0123)")),    "=", Sort(Array("(0, 123)", "(0, 12.3)", "(0, 1.23)", "(0.1, 23)", "(0.1, 2.3)", "(0.12, 3)"))
  85. SmAssert.That Sort(模糊坐标("(100)")),    "=", Sort(Array("(10, 0)"))
复制代码










插件下载

 
【插件】神梦断言插件 SmAssert.dll,帮助开发者发现业务逻辑错误

2#

看来一楼是我的了

你们好
3#

模糊坐标???

发新话题 回复该主题