在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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP