第一次写博客……
【题意】
给一个字符串,问至少需要改变多少个才能使,字符串中‘L’ 的个数等于‘R’的个数,‘U’ 的个数‘等于‘D’。
【解析】
很容易想到如果字符串的长度为奇数数的话肯定是不可能完成的,就输出-1
同样的 L + R 和 U + D 也应该是偶数,那么判断一下,如果不是偶数的话就向另一对借一个,同时ans + 1;至于如何借,肯定是向另一对较大的那个借一个,放到这一对较小的那个上面这样能减少这一对内部的差距。然后结果就是两对内部的差距相加除以2,再加上ans。
唉,很简单的题,却犯了很低级的错误,交的时候忘记加注释了,心塞塞……
【代码】
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
string s;
int main()
{
int u,d,r,l;
while(cin>>s){
int ans = 0;
u = d = l = r =0;
for(int i = 0;i<s.length();i++){
if (s[i] == 'U') u++;
if (s[i] == 'D') d++;
if (s[i] == 'R') r++;
if (s[i] == 'L') l++;
}
if ((s.length() % 2)){
cout<<-1<<endl;
continue;
}
ans = 0;
if ((int)fabs(u-d) % 2){
if (l > r) r ++;
else l++;
if (u>d) u--;
else d--;
ans ++;
}
cout<<(fabs(d - u) / 2) + (fabs(l - r) / 2) + ans<<endl;
}
return 0;
}