北郵oj 90題(字串轉換)

2021-09-12 06:15:01 字數 1034 閱讀 9767

題目描述

我們將僅由若干個同一小寫字母構成的字串稱之為簡單串,例如"aaaa"是乙個簡單串,而"abcd"則不是簡單串。現在給你乙個僅由小寫字母組成的字串,你需要用最小的花費,將其轉換成乙個簡單串。 花費的計算規則如下:將a到z這26個小寫字母從左到右排成一排,則每個字母都有左右兩個鄰居,我們認為a的左鄰居是z,z的右鄰居是a。乙個字母只能轉換成其相鄰的字母,轉換的花費為1。乙個字母可以進行多次轉換,例如將a轉換成d,可以進行如下的步驟: a->b->c->d,花費為3。字串的轉換花費為所有字母轉換花費之和。例如將字串"abbbz"轉換成簡單串的最小花費為3,轉換後的結果為"bbbbb"。

輸入格式

第一行乙個整數t(t≤100),表示測試資料的組數。 每組測試資料只有一行,為僅含小寫字母的字串,字串長度不超過1000。

輸出格式

對於每一組資料,輸出乙個整數,表示將字串轉換成簡單串的最小花費。

輸入樣例

2abbba

abbac

輸出樣例23

兩種方法(**純自己手打,小白上路…):

1.輸入乙個字串,從頭遍歷一遍計算每個字母到『a』的花費,累加起來存到陣列中(也可以定義乙個min,不斷重新整理最小值),然後算到『b』的…最後把這個花費陣列排序,看最小的花費多少。

2.輸入乙個字串,從字串第乙個開始遍歷,計算所有字元轉換到該字元的花費並累加,n*n迴圈,最後也是排序一下找乙個最小花費。

**1:

#include using namespace std;

int main()

for(int i=0;i<26;i++)

ans[i] += temp;

}//cout<**2:

#include using namespace std;

int main()

// cout<}

sort(t,t+str.length());

cout << t[0] << endl;

}return 0;

}

字串轉換 北郵OJ90

時間限制1000 ms記憶體限制65536 kb 我們將僅由若干個同一小寫字母構成的字串稱之為簡單串,例如 aaaa 是乙個簡單串,而 abcd 則不是簡單串。現在給你乙個僅由小寫字母組成的字串,你需要用最小的花費,將其轉換成乙個簡單串。花費的計算規則如下 將a到z這26個小寫字母從左到右排成一排,...

北郵oj 字串操作

題目 坑1.字串輸入可以有空格 坑2.有空格使用gets 函式,需要在一些地方使用getchar 函式吃掉回車 坑3.翻轉時索引不一定從0開始,擷取一半進行翻轉時要小心 include includeusing namespace std int main char buf 210 while ge...

華為OJ基礎題 字串運用 密碼擷取

catcher是mca國的情報員,他工作時發現敵國會用一些對稱的密碼進行通訊,比如像這些abba,aba,a,123321,但是他們有時會在開始或結束時加入一些無關的字元以防止別國破解。比如進行下列變化 abba 12abba,aba abakk,123321 51233214 因為截獲的串太長了,...