数字字符串的面试题目

实现一个函数,传入参数为任意字符串,按行输出此字符串中连续出现的数字。例如:a1b23c45,输出的结果为1、23、45

 #include"stdio.h"


void printnum(char s[])
{
    for(int i=0;s[i]!='\0';i++)
    {
        if(s[i]>='0'&&s[i]<='9')
        {
            printf("%c",s[i]);
            if(s[i+1]<='0'||s[i+1]>='9')
            {
                printf("\n");
            }
        }
    }


}
int main()
{

    char a[]="a1b23c45";
    printnum(a);
    return 0;
} 

我觉得可以通过字符串切割,以非数字字符做为切割规则。

#include

using namespace std;

void fun( string str ){
for(int i=0;i if( ( str[i]>='0' && str[i]<='9') && ( str[i+1]<'0' || str[i+1]>'9' ) )
cout< else
if( str[i]>='0' && str[i]<='9' )
cout<<str[i];
}
}

int main(){
string str;
cin>>str;

fun( str );

return 0;

}


 #include <iostream>

using namespace std;

void fun( string str ){
    for(int i=0;i<str.size();i++){
        if( ( str[i]>='0' && str[i]<='9') && ( str[i+1]<'0' || str[i+1]>'9' ) )
            cout<<str[i]<<endl;
        else
            if( str[i]>='0' && str[i]<='9' )
                cout<<str[i];
    }
}

int main(){
    string str;
    cin>>str;

    fun( str );

    return 0;
}

java正则表达式匹配:
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\d+");
Matcher matcher = pattern.matcher("sdf3534lk454lk6767");
while(matcher.find()){
System.out.println(matcher.group());
}
}