开始感觉看感觉很简单,结果wa了很久,最后想到感觉还是很好的思维题
开始我是打算将l,u一组,r,d一组
后来改成l,r一组,d,u一组求差就过了。。。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
#include <vector>
#define inf 1e9+10
using namespace std;
const int maxn=100010;
typedef long long ll;
string s;
int cnt1,cnt2,cnt3,cnt4,ans;
int main()
{
cin>>s;
if(s.length()%2){
cout<<-1<<endl;
return 0;
}
for(int i=0;i<s.length();i++){
if(s[i]=='L') cnt1++;
if(s[i]=='U') cnt2++;
if(s[i]=='R') cnt3++;
if(s[i]=='D') cnt4++;
}
int res1=abs(cnt1-cnt3);
int res2=abs(cnt2-cnt4);
ans+=min(res1,res2);//核心,从更大到更小转移
ans+=(max(res2,res1)-min(res1,res2))/2;//更大的剩余转移,此时差的变化不一样
cout<<ans<<endl;
return 0;
}