[白俊-実現]製作1213号パリンドロン


白俊1213号王。
マイコード
1.実施方法
  • 各アルファベットとその個数をTreeMapに格納する.TreeMapはキー値に基づいて自動的にソートされます.
  • 1文字あたりの個数が偶数か、または1文字だけが奇数かをチェックし、残りは偶数である.満足しないでプログラムを終了します.
  • 1文字の場合は、最後に文字列の真ん中に置きます.
  • アルファベットの個数により、文字列の先頭と末尾から中央に、該当するアルファベットを埋めます.(p[i], p[n-i-1])
  • アルファベットの個数が3個の奇数を超え、(アルファベットを埋めた個数)=(アルファベットの総数-1)であれば、繰り返し文を終了し、最後にそのアルファベットを文字列の真ん中に置く.
  • 2.見逃した場所
    for(int cnt=0; cnt<map.get(key); cnt++){
    		.....
    }
    (1)cnt++をfor文として使用する場合,ループごとに実際に使用するアルファベット数は2個であるが,コードには1個として格納する.簡単な間違いですが、間違いやすいので気をつけてください.
    while(cnt<map.get(key)) {
    	if(key==alpha && map.get(key)==1) break; //cnt==1 should be middle in array			p[i]=key;
    	p[n-i-1]=key;
    				
        	cnt+=2; //use 2 place			
        	i++;
    				
    	if(key==alpha && cnt==map.get(key)-1) break; //last odd alpha should be middle in array
    }
    (2)条件文にcnt==map.get(key)-1nが含まれていない場合、n文字列のn+2文字でn文字が埋め込まれますので注意してください.