📅  最后修改于: 2023-12-03 14:51:38.879000             🧑  作者: Mango
在 CodeChef 中,字符串处理是一种必不可少的技能。在本篇文章中,我们将介绍如何使用 C++ 处理字符串,以及在 CodeChef 中如何解决字符串问题。
在 C++ 中,我们可以使用 string
类型来处理字符串。例如:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "hello world";
cout << s << endl;
return 0;
}
输出结果为:
hello world
string
类型内置了许多方法,可以用于处理字符串。下面是一些常用的方法:
length()
返回字符串的长度。
string s = "hello";
cout << s.length() << endl; // output: 5
substr(start, length)
返回从 start
位置开始,长度为 length
的子字符串。
string s = "hello world";
string sub = s.substr(6, 5);
cout << sub << endl; // output: world
find(substring)
返回子字符串在原字符串中第一次出现的位置,如果没有找到则返回 string::npos
。
string s = "hello world";
cout << s.find("world") << endl; // output: 6
replace(start, length, str)
用字符串 str
替换原字符串中从 start
位置开始,长度为 length
的子字符串。
string s = "hello world";
s.replace(6, 5, "there");
cout << s << endl; // output: hello there
更多 string
类型的方法可以在官方文档中查看:http://www.cplusplus.com/reference/string/string/
在 CodeChef 中,字符串问题通常需要使用上述方法以及其他一些算法来解决。下面是一些常见的字符串问题:
给定一个字符串,判断它是否是回文字符串,即正着读和反着读都一样。
#include <iostream>
#include <string>
using namespace std;
bool is_palindrome(string s) {
int n = s.length();
for (int i = 0; i < n / 2; i++) {
if (s[i] != s[n - i - 1]) {
return false;
}
}
return true;
}
int main() {
string s = "racecar";
if (is_palindrome(s)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
输出结果为:
Yes
给定一个字符串,查找是否有一个非空的子字符串,它可以通过重复若干次得到原字符串。
#include <iostream>
#include <string>
using namespace std;
bool is_repeated(string s, string sub) {
int m = sub.length();
int n = s.length();
if (n % m != 0) {
return false;
}
for (int i = 0; i < n; i += m) {
if (s.substr(i, m) != sub) {
return false;
}
}
return true;
}
int main() {
string s = "abcabcabc";
for (int i = 1; i <= s.length(); i++) {
string sub = s.substr(0, i);
if (is_repeated(s, sub)) {
cout << sub << endl;
break;
}
}
return 0;
}
输出结果为:
abc
给定一个由空格分隔的字符串,求它包含的单词个数。
#include <iostream>
#include <string>
using namespace std;
int count_words(string s) {
int count = 0;
int n = s.length();
for (int i = 0; i < n; i++) {
if (s[i] != ' ') {
count++;
while (i < n && s[i] != ' ') {
i++;
}
}
}
return count;
}
int main() {
string s = "Hello world! How are you?";
cout << count_words(s) << endl; // output: 5
return 0;
}
以上就是本文介绍的内容,希望对大家学习 C++ 和在 CodeChef 上解决字符串问题有所帮助!