+-字串
時間限制:1000 ms | 記憶體限制:65535 KB
難度:1
- 描述
- Shiva得到了兩個只有加號和減號的字串,字串長度相同。Shiva一次可以把一個加號和它相鄰的減號交換。他想知道最少需要多少次操作才能把第一個字串變換成第二個字串。你現在要去幫助他完成那個這個問題。
- 輸入
- 多組測試資料
每組資料有兩行,每行包含一個由”+”和”-“最成的字串。每個子符串長度不超過5000。 - 輸出
- 僅一個整數,輸出最少需要操作的次數。如果答案不存在,輸出-1。
- 樣例輸入
-
++-+--+ -++--++
- 樣例輸出
-
4
本題的思路是統計兩字串個+的位置,然後將第一個字串的第i個+移到第二個字串的第i個+的位置,將兩個字串的對應+的索引相減即為移動的距離
此題要注意while(cin >> a >>b)多組測試資料
#include <iostream> #include <string> #include <vector> #include <cstdlib> using namespace std; int main(){ string a,b; while(cin >> a >>b){ vector<int> plusA,plusB; for(int i = 0 ; i < a.length(); ++ i){ if(a[i] == '+') plusA.push_back(i); if(b[i] == '+') plusB.push_back(i); } int dist = 0; for(int i = 0 ; i < plusA.size(); ++i) dist += abs(plusA[i]-plusB[i]); cout<<dist<<endl; } }