检查字符串中的每个字符是否在数组 C++ 中可用
Check if every character in a string is available in an array c++
我试了好几个小时,还是找不到好的方法,这就是我想做的。
string word = "hello";
string word2 = "hey";
string letters[4] = {"h", "e", "l", "o"};
如果字符串 "word" 中的每个字符都包含在数组 "letters" 中(在本例中为 true)并且字符串 "word2" 为假。有什么想法或建议吗?我是 c++ 的新手。
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
const int MAX = 20
bool check_availability(char word, char letters){
length_of_letters = sizeof(letters) / sizeof(letters[0])
for (int i = 0 ; i < length_of_letters ; i++){
if (letters[i] < word[i] < letters[length_of_letters]) {
return true
}
}
}
int main() {
clrscr();
char word[MAX], letters[MAX];
int lenght;
cout<<"Please enter a word: ";
getc(word)
cout<<"Please enter the length of the array of letters you would be entering: ";
cin>>length
for (int i = 0 ; i < length ; i++){
cin>>letters[i]
}
for (int i = 0 ; i < lenght ; i++) {
res = check_availability(word, letters[i])
assert(res == true) //The code will give an assertion error when condition is not satisfied
}
return 0;
}
一个有效的解决方案是创建一个长度为 256(可能的字符数)的布尔数组并将其初始化为 0.This 该数组将告诉您字母字符串中是否存在某个字符。
之后,我们可以遍历您的字符串 'word' 以检查该字符是否存在于 'letter' 字符串中。
检查此功能:
bool isContained(string word,string letters){
bool letts[256]={0};
for(int i=0;i<letters.size();i++){
letts[letters[i]=1;
}
for(int i=0;i<word.size();i++){
if(!letts[word[i]]){
return false;
}
}
return true;
}
希望对您有所帮助。
您可以使用 [] 运算符访问字符串对象中的每个字符,就像访问 C 字符串一样。或者字符串对象的"at"方法。
所以你可以嵌套 for 循环,一个用于单词的长度,另一个用于字母的长度。
bool f(string word, string* letters, int letters_length) {
for (int i = 0; i < word.size(); i++) {
bool flag = false;
for (int j = 0; j < letters_length; j++) {
if (word[i] == letters[j][0]) { // compare each word's character and each letters's character
flag = true;
break;
}
}
if (!flag) { // if the word's character couldn't be found in letters, return false
return false;
}
}
return true; // this can be reached only if all the comparison are passed
}
我认为这应该可行。
bool checkLettersIncluded(std::string word, std::string letters)
{
int includedLetter = 0;
for(const char c:word)
{
for(const char d:letters)
{
if(c==d)
{
includedLetter++;
break;
}
}
}
return includedLetter == word.length();
}
int main() {
std::string word = "hello";
std::string word2 = "hey";
std::string letters = "helo";
if(checkLettersIncluded(word2, letters))
{
std::cout << "All characters available";
}
}
我试了好几个小时,还是找不到好的方法,这就是我想做的。
string word = "hello";
string word2 = "hey";
string letters[4] = {"h", "e", "l", "o"};
如果字符串 "word" 中的每个字符都包含在数组 "letters" 中(在本例中为 true)并且字符串 "word2" 为假。有什么想法或建议吗?我是 c++ 的新手。
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
const int MAX = 20
bool check_availability(char word, char letters){
length_of_letters = sizeof(letters) / sizeof(letters[0])
for (int i = 0 ; i < length_of_letters ; i++){
if (letters[i] < word[i] < letters[length_of_letters]) {
return true
}
}
}
int main() {
clrscr();
char word[MAX], letters[MAX];
int lenght;
cout<<"Please enter a word: ";
getc(word)
cout<<"Please enter the length of the array of letters you would be entering: ";
cin>>length
for (int i = 0 ; i < length ; i++){
cin>>letters[i]
}
for (int i = 0 ; i < lenght ; i++) {
res = check_availability(word, letters[i])
assert(res == true) //The code will give an assertion error when condition is not satisfied
}
return 0;
}
一个有效的解决方案是创建一个长度为 256(可能的字符数)的布尔数组并将其初始化为 0.This 该数组将告诉您字母字符串中是否存在某个字符。
之后,我们可以遍历您的字符串 'word' 以检查该字符是否存在于 'letter' 字符串中。 检查此功能:
bool isContained(string word,string letters){
bool letts[256]={0};
for(int i=0;i<letters.size();i++){
letts[letters[i]=1;
}
for(int i=0;i<word.size();i++){
if(!letts[word[i]]){
return false;
}
}
return true;
}
希望对您有所帮助。
您可以使用 [] 运算符访问字符串对象中的每个字符,就像访问 C 字符串一样。或者字符串对象的"at"方法。
所以你可以嵌套 for 循环,一个用于单词的长度,另一个用于字母的长度。
bool f(string word, string* letters, int letters_length) {
for (int i = 0; i < word.size(); i++) {
bool flag = false;
for (int j = 0; j < letters_length; j++) {
if (word[i] == letters[j][0]) { // compare each word's character and each letters's character
flag = true;
break;
}
}
if (!flag) { // if the word's character couldn't be found in letters, return false
return false;
}
}
return true; // this can be reached only if all the comparison are passed
}
我认为这应该可行。
bool checkLettersIncluded(std::string word, std::string letters)
{
int includedLetter = 0;
for(const char c:word)
{
for(const char d:letters)
{
if(c==d)
{
includedLetter++;
break;
}
}
}
return includedLetter == word.length();
}
int main() {
std::string word = "hello";
std::string word2 = "hey";
std::string letters = "helo";
if(checkLettersIncluded(word2, letters))
{
std::cout << "All characters available";
}
}