1.把数组排成最小的数
class Solution { public: static bool compare(const string& s1, const string& s2) { string t1 = s1 + s2; string t2 = s2 + s1; return t1 <= t2? true : false; } string PrintMinNumber(vector<int> numbers) { string str; int i, len = numbers.size(); if (len<1) return str; string res; vector<string> vt; for (i = 0;i<len;++i) { stringstream stream; stream << numbers[i]; stream >> str; vt.push_back(str); } sort(vt.begin(), vt.end(), compare); for (i = 0;i<len;++i) res += vt[i]; return res; } };
这里使用string会比使用char*更加快捷方便。
另外使用sort而不是qsort,主要是sort是qsort的升级,且参数更少,不需要制定每个参数占据的内存空间大小。
2.字符流中第一个不重复的字符
少有的一遍通过的程序,眼泪都快流下来了
class Solution { public: Solution():index(0){ //初始化位置 for(int i=0;i<256;++i) pos[i]=-1; } //Insert one char from stringstream void Insert(char ch) { if(pos[ch]==-1) pos[ch]=index; else if(pos[ch]>=0) pos[ch]=-2; ++index; } //return the first appearence once char in current stringstream char FirstAppearingOnce() { char res=‘#‘; int minv=1e8,i; //设置字符串max值 for(i=0;i<256;++i){ if(pos[i]>=0&&pos[i]<minv){ //若是当前位置小于min,则对min进行更新 res=(char)i; minv=pos[i]; } } return res; } private: int index; int pos[256]; };
时间: 2024-10-12 18:56:04