HJ92_在字符串中找出连续最长的数字串_技巧

Posted Aneverforget

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HJ92_在字符串中找出连续最长的数字串_技巧相关的知识,希望对你有一定的参考价值。

思路:按照模拟思路,没有技巧地,代码如2。

新思路:把非数字转换成空格,使用空格作为标记切片。

!!!

注意:字符串变更,要用replace()方法生成新字符串!!!

 

参考高赞答案,重写代码如1:

 import sys
 a=[]
 for line in sys.stdin:
     a.append(line.strip())
 for i in a:
     for j in range(len(i)):
         if not i[j].isdigit():
             i=i.replace(i[j]," ")#i[j]=" ",字符串变更不可通过赋值方法,只能通过replace()方法生成新字符串
     new=i.split()
     c=[len(i) for i in new]
     s=""
     for i in new:
         if len(i)==max(c):
             s=s+i
     print(",".join([s,str(max(c))]))

 

 import sys
 a=[]
 for line in sys.stdin:
     a.append(line.strip())
 for i in a:
     c=-1
     l1=[]
     l,ind=[],[]
     for j in i:
         c+=1
         
         if j.isdigit():
             #print(j,l)
             if l:
                 if c-1==ind[-1]:
                     l.append(j)
                     ind.append(c)
                 else:
                     #print(j)
                     l1.append(l.copy())
                     l,ind=[],[]
                     l.append(j)
                     ind.append(c)
                 if c==len(i)-1:
                     l1.append(l.copy())
                     #print(j,l1)
             else:
                 #print(j)
                 l.append(j)
                 ind.append(c)
     lenth=[len(i) for i in l1]
     new=""
     for i in l1:
         if len(i)==max(lenth):
             new=new+"".join(i)
     print(",".join([new,str(max(lenth))]))

 

[华为]在字符串中找出连续最长的数字串

链接:https://www.nowcoder.com/questionTerminal/2c81f88ecd5a4cc395b5308a99afbbec
来源:牛客网

样例输出

输出123058789,函数返回值9

输出54761,函数返回值5

 

接口说明

函数原型:

   unsignedint Continumax(char** pOutputstr,  char* intputstr)

输入参数:
   char* intputstr  输入字符串;

输出参数:
   char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;如果输入字符串是空,也应该返回空字符串;  

返回值:
  连续最长的数字串的长度

 

 

 

 

 

输入描述:

输入一个字符串。


输出描述:

输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度

 

输入例子:
abcd12345ed125ss123058789

 

输出例子:
123058789,9

#include <iostream>
#include <string>

using namespace std;
int main()
{       
    string str;    
    while( cin>>str )    
    {        
        int i;        
        int max = 0;       
        string ss;        
        string out;        
        
        for(i = 0; i < str.size(); i++)        
        {           
            if(str[i] >= ‘0‘ &&str[i] <= ‘9‘)            
            {                
                ss += str[i];                
                while(str[i+1] >= ‘0‘ &&str[i+1] <= ‘9‘)                
                {                    
                    i++;                   
                    ss += str[i];               
                }                
                
                if(ss.size() > max)                
                {                   
                    max = ss.size();                   
                    out = ss;                                  
                }                
                
                else if(ss.size() == max)                   
                    out += ss;            
            }             
            ss.clear();                   
        }       
        cout<<out<<‘,‘<<max<<endl;           
    }    
    return 0;
}

  








以上是关于HJ92_在字符串中找出连续最长的数字串_技巧的主要内容,如果未能解决你的问题,请参考以下文章

华为机试HJ92:在字符串中找出连续最长的数字串

华为机试真题 C++ 实现字符串中找出连续最长的数字串

字符串中找出连续最长的数字串(正则表达式)

[华为]在字符串中找出连续最长的数字串

HJ4 字符串分隔_Scala

HJ4 字符串分隔_Scala