[HDU2577]How to Type(DP)
Posted coding-gaga
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[HDU2577]How to Type(DP)相关的知识,希望对你有一定的参考价值。
题目链接
题意
给一个大小写字符串,求最少敲击字符串次数,最开始和最后要求shift都是down的。如日常,大小写转换可以ctrl+z或者shift保持 up/down。
题解
两个dp数组,一个表示当前shift状态是up的最小转换次数,一个表示当前shift状态是down的最小转换次数。最后做处理和比较,再加上字符数即可。
代码
import java.util.Scanner;
public class Main
public static void main(String args[])
Scanner in=new Scanner(System.in);
int n=in.nextInt();
while(n--!=0)
String s=in.next();
int ans=getMinTypeTime(s);
System.out.println(ans);
public static int getMinTypeTime(String s)
int[] dpLow=new int[s.length()+1];
int[] dpUp=new int[s.length()+1];
dpLow[0]=0;//
dpUp[0]=1;//
for(int i=1;i<=s.length();++i) //
if(s.charAt(i-1)>='a'&&s.charAt(i-1)<='z')
dpLow[i]=Math.min(dpLow[i-1], dpUp[i-1]+1);
dpUp[i]=Math.min(dpLow[i-1]+1, dpUp[i-1]+1);
else
dpUp[i]=Math.min(dpLow[i-1]+1, dpUp[i-1]);
dpLow[i]=Math.min(dpLow[i-1]+1, dpUp[i-1]+1);
return Math.min(dpLow[s.length()], dpUp[s.length()]+1)+s.length();
以上是关于[HDU2577]How to Type(DP)的主要内容,如果未能解决你的问题,请参考以下文章