輸入字符串規則去重aabb->aab

probs:

  1. 三個同樣的字母連在一起,去掉其中一個:比如 aaa->aa
  2. 兩對一樣的字母(aabb)連在一起,去掉第二對中一個字母:比如 aabb->aab
  3. 上面的規則優先“從左到右”匹配,即如果是aabbcc,雖然aabb和bbcc都是錯誤拼寫,應該優先考慮修復aabb,結果爲aabcc

code:

// FixWords.cpp : 此文件包含 "main" 函數。程序執行將在此處開始並結束。
//

#include "pch.h"
#include <iostream>

using namespace std;

int main() {

		char c;
		int state = 0;
		char end = '\0';
		while (cin >> c) {
			switch (state)
			{
			case 0:
				if (c == end) {
					state = 1;
				}
				break;
			case 1:
				if (c == end) {
					state = 2;
				}
				else state = 3;
				break;
			case 2:
				if (c != end) {
					state = 3;
				}
				else {
					state = 4;
				}
				break;
			case 3:
				if (c == end) {
					state = 4;
				}
				else state = 0;
				break;
			case 4:
				if (c != end) {
					state = 0;
				}
			}
			if (state != 2 && state != 4) {
				cout << c;
			}
			end = c;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章