带有可互换字母的字符串

Posted

技术标签:

【中文标题】带有可互换字母的字符串【英文标题】:String with an interchangeable letter 【发布时间】:2014-04-08 18:13:47 【问题描述】:

我的作业方向如下:

返回字符串“hope”出现在给定字符串中的任何位置的次数,除了我们将接受任何字母作为“p”,因此“hode”和“hooe”计数。

我正在努力弄清楚如何使第三个字母等于任何内容,并且仍然让程序识别它是正确的。

到目前为止,我的代码显然是错误的,但仍然包含它。

一个大问题是我不能告诉数组检查它是否匹配字符串。

int wordsFunction(string words)

int num = 0;

for(int i = 0; i < words.length(); i++)

    if(words[i] == "Hope" || words[i] == "hope")
    
        num++;
    

return num;


main()

string words;
cout << "Enter a string: ";
getline(cin, words);
cout << wordsFunction(words);

【问题讨论】:

如果 wordsstringwords[i]char,您不能将它与 "hope" 的字符数组进行比较。查找子字符串“ho”,然后检查第 4 个字母是否为“e”。 您的代码不起作用。提示:您正在将变量与不兼容的(粗略近似:不同)类型进行比较。在 programmig 中,这就像比较苹果和香蕉。 【参考方案1】:

到目前为止,我的代码显然是错误的

确实如此。我不会解释为什么你的代码是错误的,直接去描述一个修复。

您的main 读取允许空格的字符串,这很好:您的代码的 I/O 部分不需要更改。

现在观察到要检测单词"ho*e"* 表示任何单个字符,在单词w 中的i 位置,您需要检查w[i] 是否是'h'w[i+1]'o'w[i+3]'e',并且索引 i+3 是有效的。这变成了一个简单的检查:

if (i+3 < w.size() && w[i] == 'h' && w[i+1] == 'o' && w[i+3] == 'e') 
    count++;

【讨论】:

很好。现在最好让这个程序案例(上下)证明。 @MudassirHussain OP 发布的代码表明"ho*e" 的第一个字母可能是大写的,但问题的文本不支持这一假设。当然,一个简单的解决方法是在搜索之前将w 转换为小写。 哇,谢谢你,这很有趣。很好的解释。

以上是关于带有可互换字母的字符串的主要内容,如果未能解决你的问题,请参考以下文章

javascript 字符串 数字反转 字母大小写互换

nyoj 457-大小写互换

python字符串

带有字母、数字、任意顺序的可选特殊字符的正则表达式单词

在 SQL 版本之间可互换的 Linq dbml

汇编语言-字母字符转换