在 C++ 中计算单词数量,其中第 i 个字母是给定单词的第 (i-1) 个、第 i 个或第 (i+1) 个字母
给定一个字符串 str[] 作为输入。目标是从 str[] 中计算出与 str[] 长度相同的单词,并且字母位置满足以下条件:第 i 个字母被替换为第 (i-1) 个、第 i 个或第 (i+1) 个字母。
对于第一个字母,替换将来自第 i 个或第 i+1 个位置。
对于最后一个字母,替换将来自第 i-1 个或第 i 个位置。
让我们通过示例来理解。
输入 − str[] = “TPP”
输出 − 第 i 个字母是给定单词的第 (i-1) 个、第 i 个或第 (i+1) 个字母的单词数量为 - 4
解释
Replacing T by T (i)th or 1st P (i+1)th = TPP, PPP Replacing 1st P by T (i-1)th, P (i)th, or P(i+1)th = TTP, TPP, TPP Replacing 2nd P by P(i-1)th or P(i)th = TPP, TPP Unique combination of replacements: TPP, PPP, TTP, PTP
输入 − str = “aaa”
输出 − 第 i 个字母是给定单词的第 (i-1) 个、第 i 个或第 (i+1) 个字母的单词数量为:1
解释
Replacing a by a (i)th or 2nd a (i+1)th = aaa, aaa Replacing 2nd a by a (i-1)th, a (i)th, or a(i+1)th = aaa, aaa, aaa Replacing 3rd a by a(i-1)th or a(i)th = aaa, aaa Unique combination of replacements: aaa
下面程序中使用的方法如下
我们知道,对于每个字母,我们有三种可能性。如果对于当前字母 i,所有 (i-1)th、ith、(i+1)th 都是不同的,那么我们有 3 个选项。如果两个相同,我们有 2 个选项,如果全部相同,则只有一个选项。
因此,我们将遍历字符串并检查唯一性,并根据字母乘以 3、2 或 1。对于第一个和最后一个字母,我们将检查唯一性并以类似的方式乘以 2 或 1。
将字符串 str[] 作为字符数组。
函数 total(char str[], int length) 获取字符串并返回 str[] 中第 i 个字母是给定单词的第 (i-1) 个、第 i 个或第 (i+1) 个字母的单词数量。
将初始计数设置为 1。str[] 中的单词本身。
如果只有一个字母,长度将为 1,返回 1。
检查索引 0 处的第一个字母。如果它与第二个相同,则 str[0]==str[1],则将计数乘以 1
如果它们不同,则将计数乘以 2。
现在使用 for 循环从索引 i=1 到 i<length-1 遍历从第二个字母到倒数第二个字符。
对于索引 i 处的每个字母。检查 str[i] 是否与 str[i-1] 或 str[i+1] 相同。如果是,则将计数乘以 1。
如果任意两个相同,则将计数乘以 2。
否则将计数乘以 3。
对于最后一个字符,检查 str[i-1]==str[i]。如果为真,则将计数乘以 1。否则乘以 2
最后,我们将获得这些不同单词的计数。
返回计数作为结果。
示例
#include<bits/stdc++.h> using namespace std; int total(char str[], int length){ int count = 1; if (length == 1){ return count; } if (str[0] == str[1]){ count = count * 1; } else{ count = count * 2; } for (int j=1; j<length-1; j++){ if (str[j] == str[j-1] && str[j] == str[j+1]){ count = count * 1; } else if (str[j] == str[j-1]){ count = count * 2; } else if(str[j] == str[j+1]){ count = count * 2; } else if(str[j-1] == str[j+1]){ count = count * 2; } else{ count = count * 3; } } if (str[length - 1] == str[length - 2]){ count = count * 1; } else{ count = count * 2; } return count; } int main(){ char str[] = "TPP"; int length = strlen(str); cout<<"Count of words whose i-th letter is either (i-1)-th, i-th, or (i+1)-th letter of given word are: "<<total(str, length) << endl; return 0; }
输出
如果我们运行以上代码,它将生成以下输出 -
Count of words whose i-th letter is either (i-1)-th, i-th, or (i+1)-th letter of given word are: 4