パーカッションの米国ミッションキーボードケース変換の最小数

質問:
Aについては、入力のために+ A 2ウェイタップをシフトすることができ、キャップロックがケースをロックするために使用されてもよいし、タップA、タップ2が実装。キャップはロックケースは、シフト+ Aは、小文字の入力によって実現されてもよいことに留意されたいです。正しい入力を達成するために、少なくともどのように多くのタップ、与えられた文字列のケースの下に解決しました。
コード:
DPアイデアが、それは現在のケースで維持する必要がある、入力状態は、大文字と小文字の入力状態が2回、最低タップです。

import java.util.*;

public class Main{
    public static void main(String[] args){
        String str = "AaAAAA";  //输出应该是8次敲击次数
        int N = str.length();
        int[][] dp = new int[N+1][2];
        dp[0][0] = 1;  // 大小状态
        dp[0][1] = 0;  // 小写状态
        for(int i = 1; i <= N; i++){
            char c = str.charAt(i-1);
            if(c >= 'A' && c <= 'Z'){
                dp[i][0] = Math.min(dp[i-1][0]+1, dp[i-1][1]+2);
                dp[i][1] = Math.min(dp[i-1][0]+2, dp[i-1][1]+2);
            }
            if(c >= 'a' && c <= 'z'){
                dp[i][0] = Math.min(dp[i-1][0]+2, dp[i-1][1]+2);
                dp[i][1] = Math.min(dp[i-1][0]+2, dp[i-1][1]+1);
            }
        }
        System.out.println(Math.min(dp[N][0],dp[N][1]));
    }
}
公開された557元の記事 ウォンの賞賛500 ビュー153万+

おすすめ

転載: blog.csdn.net/qq_16234613/article/details/100057012