資源限制
時間限制:1.0s 記憶體限制:512.0mb
問題描述
回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。
交換的定義是:交換兩個相鄰的字元
例如mamad
第一次交換 ad : mamda
第二次交換 md : madma
第三次交換 ma : madam (回文!完美!)
輸入格式
第一行是乙個整數n,表示接下來的字串的長度(n <= 8000)
第二行是乙個字串,長度為n.只包含小寫字母
輸出格式
如果可能,輸出最少的交換次數。
否則輸出impossible
樣例輸入
5mamad
樣例輸出
3給定乙個字串,每個字元只能交換他左右兩個,問最小步數,策略:
#includeusing namespace std;
char a[8005];
int n;
int flag=0;
int ans=0;
int index=0;
int len;
int main()
index=len/2-i+1;//如果沒有找到匹配的把它放到中間。
break;
}else if(a[i]==a[j])
} cout<;
return 0;
}
字串操作 靠字串分割字串
字串分解函式。注意strtok比較複雜。要妥善運用!也可以不用strtok函式,但要實現字串靠字串分割比較困難!注意str指向的空間必須是可讀可寫的 如陣列或動態分配的空間 不能為字串常量的指標,因為strtok改變了其中的內容。include include 功能 將str中的字串按照elemon...
字串操作
字串操作 要了解字串操作首先要了解什麼是字串。前面已經提過,字串是乙個由零個或者多個字元組成的有限序列,既然是有限的那麼也就意味著字串存在乙個起始位置和乙個結束位置。我們以指定起始位置的方式來通知程式從該位置起向後的一段記憶體空間的內容應該解釋為字串。那麼這個字串在什麼地方結束呢?規定當遇到字元 0...
字串操作
include using namespace std int strlength char str char strcopy char str1,char str2 char strlink char str1,char str2 int main char strcopy char str1,c...