ACM +-字串

OpenSoucre發表於2014-04-09

+-字串

時間限制: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;
    }
}