1、百度面试题之给定数字字符串转为相应数字。如“987”转为987。
代码:
#include<iostream>
#include<typeinfo>
using namespace std;
int str2num(string str)
{
int temp = 0;
for(int i = 0; i < strlen(str.c_str()); i++)
{
temp = temp * 10 + int(str[i]) - 48;//将字符转为 ascii 码直接int即可,注意此后的ascii到数字的转换
}
return temp;
}
int main()
{
int num;
string str = "987";
num = str2num(str);
cout<< "the num is " << num << endl;
cout<< "the type of num is :" << typeid(num).name() <<endl;
system("pause");
}
2、百度面试,删除给定字符串中重复的字符,并保持字符原顺序,不能重新申请内存。如“nihao,nihao”变为“nihao”。
#include<iostream>
using namespace std;
void delete_p(char str[],char * p)//后一个字符向前一个元素覆盖
{
char *q =p;
while(*p != '\0')
{
*p = *(p + 1);
p++;
}
*p = '\0';
p = q - 1;
}
void delete_repeat(char str[])
{
char * start = str;
char * p = str;
while( *p != '\0')
{
for(char * ptr = start; ptr != p; ptr++)
{
if(*ptr == *p)
{
delete_p(str, p);
}
}
p++;
}
}
int main()
{
char str[] = "nihao,nihao";
delete_repeat(str);
cout << str << endl;
system("pause");
return 0;
}