题解 | 在字符串中找出连续最长的数字串

dic = {}
s = input()
maxlen = 0
for i in range(len(s)):
    for j in range(i+1,len(s)+1):
        if s[i:j].isdigit():
            # print(s[i:j])
            if maxlen < (j-i) :maxlen = (j-i)
            if maxlen not in dic:dic[maxlen] = []
            if (j-i)==maxlen: dic[maxlen].append(s[i:j])
print(''.join(dic[maxlen]),end=',')
print(maxlen)

全部评论

相关推荐

02-10 19:24
已编辑
北京师范大学 Java
#牛客在线求职答疑中心#某字段&nbsp;in&nbsp;(&#39;值1&#39;,&#39;值2&#39;,&nbsp;...)&nbsp;替换为&nbsp;(某字段&nbsp;==&nbsp;&#39;值1&#39;&nbsp;||&nbsp;某字段&nbsp;==哪位大佬提供个Java的算法实现?1、(业务系统&nbsp;in&nbsp;(&#39;上海-财务运营支撑平台&#39;,&#39;上海-物资协同平台&#39;))2、业务系统&nbsp;in&nbsp;(&#39;上海-财务运营支撑平台&#39;,&#39;上海-物资协同平台&#39;)3、业务部门&nbsp;==&nbsp;&#39;拼货&#39;&nbsp;and&nbsp;业务系统&nbsp;in&nbsp;(&#39;上海-财务运营支撑平台&#39;,&#39;上海-物资协同平台&#39;)替换成:(可能有更复杂的场景)1、(业务系统&nbsp;==&nbsp;&#39;上海-财务运营支撑平台&#39;&nbsp;or&nbsp;业务系统&nbsp;==&nbsp;&#39;上海-物资协同平台&#39;))2、业务系统&nbsp;==&nbsp;&#39;上海-财务运营支撑平台&#39;&nbsp;or&nbsp;业务系统&nbsp;==&nbsp;&#39;上海-物资协同平台&#39;3、业务部门&nbsp;==&nbsp;&#39;拼货&#39;&nbsp;and&nbsp;(业务系统&nbsp;==&nbsp;&#39;上海-财务运营支撑平台&#39;&nbsp;or&nbsp;业务系统&nbsp;==&nbsp;&#39;上海-物资协同平台&#39;)/**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;将&nbsp;&amp;quot;字段&nbsp;in&nbsp;(&#39;值1&#39;,&nbsp;&#39;值2&#39;,&nbsp;...)&amp;quot;&nbsp;替换为&nbsp;&amp;quot;(字段&nbsp;==&nbsp;&#39;值1&#39;&nbsp;||&nbsp;字段&nbsp;==&nbsp;&#39;值2&#39;&nbsp;||&nbsp;...)&amp;quot;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;时间复杂度:(O(n)),其中&nbsp;(n)&nbsp;是输入字符串的长度,主要时间开销在于遍历字符串进行匹配和替换操作。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;空间复杂度:(O(m)),其中&nbsp;(m)&nbsp;是替换后字符串的长度,主要用于存储替换后的结果。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;expression&nbsp;原始表达式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;转换后的表达式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@Test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;String[]&nbsp;testCases&nbsp;=&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;quot;(业务系统&nbsp;in&nbsp;(&#39;上海-财务运营支撑平台&#39;,&#39;上海-物资协同平台&#39;))&amp;quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;quot;业务系统&nbsp;in&nbsp;(&#39;上海-财务运营支撑平台&#39;,&#39;上海-物资协同平台&#39;)&amp;quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;quot;业务部门&nbsp;==&nbsp;&#39;拼货&#39;&amp;quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;quot;业务部门&nbsp;==&nbsp;&#39;拼货&#39;&nbsp;and&nbsp;业务系统&nbsp;in&nbsp;(&#39;上海-财务运营支撑平台&#39;,&#39;上海-物资协同平台&#39;)&amp;quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;quot;业务部门&nbsp;in&nbsp;(&#39;拼货&#39;,&#39;拼货2&#39;)&nbsp;and&nbsp;业务系统&nbsp;in&nbsp;(&#39;上海-财务运营支撑平台&#39;,&#39;上海-物资协同平台&#39;)&amp;quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(String&nbsp;testCase&nbsp;:&nbsp;testCases)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;replaced&nbsp;=&nbsp;replaceInClause(testCase);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&amp;quot;原始表达式:&nbsp;&amp;quot;&nbsp;+&nbsp;testCase);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&amp;quot;替换后表达式:&nbsp;&amp;quot;&nbsp;+&nbsp;replaced);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;String&nbsp;replaceInClause(String&nbsp;expression)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1.&nbsp;正则表达式部分,定义正则表达式,用于匹配&nbsp;&amp;quot;字段&nbsp;in&nbsp;(&#39;值1&#39;,&#39;值2&#39;,...)&amp;quot;&nbsp;结构&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//\\b([a-zA-Z0-9_\\u4e00-\\u9fa5]+):匹配字段名,支持英文字母、数字、下划线和中文字符。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//\\s+in\\s+:匹配&nbsp;in&nbsp;关键字,关键字前后可以有任意数量的空白字符。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//\\(\\s*&#39;([^&#39;]+)&#39;(?:\\s*,\\s*&#39;([^&#39;]+)&#39;)*\\s*\\):匹配&nbsp;in&nbsp;后面括号内的值列表,允许有一个或多个值,值之间用逗号分隔。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;regex&nbsp;=&nbsp;&amp;quot;\\b([a-zA-Z0-9_\\u4e00-\\u9fa5]+)\\s+in\\s+\\(\\s*&#39;([^&#39;]+)&#39;(?:\\s*,\\s*&#39;([^&#39;]+)&#39;)*\\s*\\)&amp;quot;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pattern&nbsp;pattern&nbsp;=&nbsp;Pattern.compile(regex);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Matcher&nbsp;matcher&nbsp;=&nbsp;pattern.matcher(expression);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;result&nbsp;=&nbsp;new&nbsp;StringBuffer();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(matcher.find())&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;field&nbsp;=&nbsp;matcher.group(1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;2.&nbsp;替换逻辑部分&nbsp;这里我们在构建替换内容时,直接在开头添加了左括号&nbsp;(,然后处理每个值,构建&nbsp;某字段&nbsp;==&nbsp;&#39;值&#39;&nbsp;的形式并用&nbsp;or&nbsp;连接,最后在结尾添加右括号&nbsp;)。这样可以确保每个替换后的&nbsp;in&nbsp;子句都被括号括起来。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;replacement&nbsp;=&nbsp;new&nbsp;StringBuilder(&amp;quot;(&amp;quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;处理&nbsp;in&nbsp;子句中的每个值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;2;&nbsp;i&nbsp;&lt;=&nbsp;matcher.groupCount();&nbsp;i++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;value&nbsp;=&nbsp;matcher.group(i);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(value&nbsp;!=&nbsp;null)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i&nbsp;&gt;&nbsp;2)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replacement.append(&amp;quot;&nbsp;or&nbsp;&amp;quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replacement.append(field).append(&amp;quot;&nbsp;==&nbsp;&#39;&amp;quot;).append(value).append(&amp;quot;&#39;&amp;quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replacement.append(&amp;quot;)&amp;quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;3.&nbsp;结果拼接部分&nbsp;将匹配到的部分替换为新的表达式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matcher.appendReplacement(result,&nbsp;Matcher.quoteReplacement(replacement.toString()));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;追加剩余的字符串&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matcher.appendTail(result);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result.toString();&nbsp;&nbsp;&nbsp;&nbsp;}
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务