LintCode P158判断两个字符串是否为变位词
用sort对字符串排序后,判断是否相等即可。
class Solution{
public:
bool anagram(string s, string t){
sort(s.begin(), s.end());
sort(t.begin(), t.end());
return s == t ? true : false;
}
};
形参中的string 和 string & 和 const char *
//第一种
void func1(string s){}
//第二种
void func2(string &s){}
//第三种
void func3(const char *s){}
第一种函数声明,可以接收的调用方式有两种:
string a,b;
a="abcd";
b="abc";
func1("abcd","abc");
func1(a,b);
既可接收字符串常量,又可接收引用类型
第二种函数声明,可以接收的调用方式只有一种:
string a,b;
a="abcd";
b="abc";
func2(a,b);
即只能接收引用类型,如果用字符常调用的话,编译器会报如下错误:
IntelliSense: 无法用 "const char [5]" 类型的值初始化 "std::string &" 类型的引用(非常量限定)
第三种函数声明,可以接收的调用方式只有一种:
func3("abcd","abc");
即只能接收字符串常量类型,如果用字符串引用类型的话,编译器会报如下错误:
IntelliSense: 不存在从 "std::string" 到 "const char *" 的适当转换函数
LintCode P013字符串查找
要点:考虑到字符串为NULL的情况,否则会异常中断
- string转const char*
string s ="abc";
const char* c_s = s.c_str();
- const char*转string
直接赋值即可
const char* c_s ="abc";
string s(c_s);
- string转char*
string s ="abc";
char* c;
const int len = s.length();
c =new char[len+1];
strcpy(c,s.c_str());
- char*转string
char* c ="abc";
string s(c);
- const char*转char*
const char* cpc ="abc";
char* pc =newchar[100];//足够长
strcpy(pc,c)