点击跳转题目
采用贪心思想,从左到右逐渐把字符串变整齐,基于这个思想,那么对于字符串的中的比如 …0101 1 0100… 中的这个1,它是变还是不变,就应该和它左边的数比较,如果一样就不变,否则就要变,因为左边是整齐的。
然后怎么变呢?如果当前1的下标为i,那么有两种变法:
1. 将i左边的数变一次,那么代价就是i-1+1=i;
2. 将i及i右边的数变一次,那么代价就是n-i;
用哪种呢?代价小的那种。
脑筋急转弯题目
class Solution {
public:
long long minimumCost(string s) {
long long ans=0;
int length=s.size();
for(int i=0;i<s.size()-1;i++){
if(s[i]!=s[i+1]){
ans+=min(i,length-i);
}
}
return ans;
}
};