字符串的基本操作对象通常是字符串整体或者其子串,很多时候我们希望对子串进行操作,这是字符串与数组不同的地方之一。且字符串部分操作比数组更加复杂,如比较和连接操作。在c++中,字符串可以用==来实现比较,也可以直接进行连接操作,但是在其他语言如java中不可以直接实现且字符串不可变。
1.查找字符串最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""
。
输入:strs = ["flower","flow","flight"]
输出:"fl"
输入:strs = ["dog","racecar","car"]
输出:""
思路:由于寻找公共前缀,不妨设置第一个为公共前缀,然后将其与之后的进行比较,删去不同的部分。
这里使用了c++函数erase(),有三种用法:https://blog.csdn.net/xueluowutong/article/details/81016581
(1)erase( pos, n); 删除从pos开始的n个字符,例如erase(0,1),删除0位置的一个字符,即删除第一个字符
(2)erase( position); 删除position处的一个字符(position是个string类型的迭代器)
(3)erase(first,last);删除从first到last之间的字符,(first和last都是迭代器)
1 class Solution { 2 public: 3 string longestCommonPrefix(vector<string>& strs) { 4 string same = strs[0]; 5 for(int i =1;i<strs.size();i++){ 6 for(int j=0;j<same.size();j++){ 7 if(same[j] != strs[i][j]) same.erase(j); 8 } 9 } 10 return same; 11 } 12 };
标签:前缀,删除,strs,erase,字符串,操作,string From: https://www.cnblogs.com/chordxx/p/17366700.html