当前位置: 首页 > 编程笔记 >

在C ++中打印不包含相邻重复项的最接近的字符串

越姚石
2023-03-14
本文向大家介绍在C ++中打印不包含相邻重复项的最接近的字符串,包括了在C ++中打印不包含相邻重复项的最接近的字符串的使用技巧和注意事项,需要的朋友参考一下

在这个问题上,我们得到一个字符串。我们的任务是打印最接近当前字符串且不包含任何相邻重复字符的字符串。

让我们以一个例子来了解问题

Input: string = “good”
Output: goad

在此示例中,我们发现索引1和2的元素相同,因此我们更改了索引2的元素。

为了解决这个问题,我们将遍历字符串并检查两个相邻元素是否相同。如果是,则更改第二个元素(如果i和i + 1元素相同,则更改i + 1元素)。解决这个问题将使用贪婪算法,对于相邻的相似元素对,我们将进行一次更改。我们要记住的一件事是在更改时检查所有附近的元素,即,如果我们更改第i个元素,则更改后的i + 1和i索引元素应该不同。

示例

显示我们解决方案实施情况的程序,

#include <iostream>
#include <string.h>
using namespace std;
void printStringWithNoDuplicates(string str){
   int len = str.length();
   for (int i = 1; i < len; i++){
      if (str[i] == str[i - 1]){
         str[i] = 'a';
         while (str[i] == str[i - 1] || (i + 1 < len && str[i] == str[i + 1])) str[i]++;
         i++;
      }
   }
   cout<<str;
}
int main(){
   string str = "good";
   cout<<"The orignal string is : "<<str<<endl;
   cout<<"String without adjecent duplicate characters is : ";
   printStringWithNoDuplicates(str);
   return 0;
}

输出结果

The orignal string is : good
String without adjecent duplicate characters is : goad
 类似资料:
  • Byte[]utf8=str1.getBytes(“Windows-1254”);test3=新字符串(“windows-1254”); 输出为I:3/Ortakl:1/2:°:1/2 但上述代码在控制台程序中工作良好,即main method main method打印类似 isortakli的输出 任何建议都必须是可行的

  • 问题内容: 我对此表示怀疑。 输出: 但是我想让它打印M2而不是M11。我无法对++进行编号,因为该变量与for循环有关,如果这样做,则会给我不同的结果,并且由于输出格式更改,因此无法使用其他print语句进行打印。 请您帮助我如何正确打印它。 问题答案: 试试这个: 换行符在哪里

  • 题目描述 输入一个字符串(只包含 a~z 的字符),求其最长不含重复字符的子字符串的长度。例如对于 arabcacfr,最长不含重复字符的子字符串为 acfr,长度为 4。 解题思路 // java public int longestSubStringWithoutDuplication(String str) { int curLen = 0; int maxLen = 0;

  • 问题内容: 今天才开始学习Java,似乎无法弄清楚。我正在学习Learnjavaonline.org上的教程,该教程教您一些知识,然后要求您编写代码来完成特定的事情,然后检查输出以查看其正确性。问题是,如果它不正确,则不会说出原因,也不会给出正确代码的示例。 它希望我使用所有原语输出一个字符串,说“ H3110 w0r1d 2.0 true” 我想出了这个 } 但它输出 我怎样才能使它不将所有整数

  • 本文向大家介绍写一个方法删除字符串中所有相邻重复的项相关面试题,主要包含被问及写一个方法删除字符串中所有相邻重复的项时的应答技巧和注意事项,需要的朋友参考一下 可以利用正则: