c++ 刷題
阿新 • • 發佈:2018-12-22
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; }