64,637
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
int check(int c)
{
if (c >= '0' && c <= '9')
return 0;
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
return 1;
return 2;
}
void print(char str[], int len)
{
for (int i = 0; i < len; i++)
printf("%c", str[i]);
}
void main()
{
char str[] = "123ABC789D4";
int maxNum = 0, num = 0, len = 0, maxLen = 0;
int strI = 0, maxStrI = 0;
for (int i = 0; str[i]; i++)
{
int type = check(str[i]);
if (type == 0)
{
if (maxLen < len)
{
maxLen = len;
maxStrI = strI;
}
len = 0;
num = num * 10 + str[i] - '0';
}
else if (type == 1)
{
maxNum = maxNum < num ? num : maxNum;
num = 0;
if (len == 0)
strI = i;
len++;
}
}
printf("最长字母串是");
print(&str[maxStrI], maxLen);
printf("\n最大整数是%d\n", maxNum);
}
(1) 尽量不用库函数; //昨天怎么没看到,看到了我就不会做了,电脑也不会中毒,晕
//最大字符串,最大数替换一个谓词就可以。
#pragma warning(disable:4996)
#include <iostream>
#include <set>
#include <string>
#include <algorithm>
#include <sstream>
using namespace std;
int main(){
string s ="what43759djg1gjposs300";
string str_cpy;
replace_copy_if(s.begin(),s.end(),back_inserter(str_cpy),isdigit,' ');
set<string> sset;
string::size_type t = 0;
string temp;
istringstream output(str_cpy);
//最大字符串可以有很多,也可能两个完全相同最大字符串出现多次,所以用了set
while ( output >> temp )
{
if (temp.size() >= t )
{
if (temp.size() > t)
{
t = temp.size();
sset.clear();
}
sset.insert(temp);
}
}
for (set<string>::iterator i = sset.begin(); i != sset.end(); ++i)
{
cout << *i << " : " << (*i).size() << endl;
}
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int GetMaxIntAndStr(const string& str, string* pMaxStr)
{
string maxStr;
int maxInt = 0;
string temStr;
string temInt;
for (size_t i = 0; i < str.length(); ++i)
{
if (str[i] >= '0' && str[i] <= '9')
{
if (temStr.length() > maxStr.length())
maxStr = temStr;
temStr = "";
temInt += str[i];
}
else
{
int n = atoi(temInt.c_str());
if (n > maxInt)
maxInt = n;
temInt = "";
temStr += str[i];
}
}
if (temStr.length() > maxStr.length())
maxStr = temStr;
int n = atoi(temInt.c_str());
if (n > maxInt)
maxInt = n;
(*pMaxStr) = maxStr;
return maxInt;
}
int main()
{
string str = "1231ABC789D4DDDDDDDDD";
string maxStr;
int maxInt = GetMaxIntAndStr(str, &maxStr);
cout<<maxStr<<endl;
cout<<maxInt<<endl;
return 0;
}
--------------------
DDDDDDDDD
1231
#include <iostream>
using namespace std;
int main()
{
char str[]="123ABC789D4";
int strlen=0;
int maxnum=0;
int num;
int j=0,pos;
for (size_t i=0;i<sizeof(str)-1;)
{
num=0;
while (str[i]>='0'&&str[i]<='9')
{
num=num*10+str[i]-0x30;
i++;
}
if(i>=sizeof(str)) break;
if(maxnum<num) maxnum=num;
j=i;
while (str[i]<='Z'&&str[i]>='A')
i++;
if(i-j>strlen){
strlen=i-j;
pos=j;
}
}
cout<<"最大的数是"<<maxnum<<endl;
cout<<"最长的字符串是";
for(j=pos;j<pos+strlen;j++)
cout<<str[j];
cout<<endl;
system("pause");
return 0;
}