zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 482 密钥格式化

    482. 密钥格式化

    给定一个密钥字符串S,只包含字母,数字以及 ‘-’(破折号)。N 个 ‘-’ 将字符串分成了 N+1 组。给定一个数字 K,重新格式化字符串,除了第一个分组以外,每个分组要包含 K 个字符,第一个分组至少要包含 1 个字符。两个分组之间用 ‘-’(破折号)隔开,并且将所有的小写字母转换为大写字母。

    给定非空字符串 S 和数字 K,按照上面描述的规则进行格式化。

    示例 1:

    输入:S = “5F3Z-2e-9-w”, K = 4

    输出:“5F3Z-2E9W”

    解释:字符串 S 被分成了两个部分,每部分 4 个字符;
    注意,两个额外的破折号需要删掉。
    示例 2:

    输入:S = “2-5g-3-J”, K = 2

    输出:“2-5G-3J”

    解释:字符串 S 被分成了 3 个部分,按照前面的规则描述,第一部分的字符可以少于给定的数量,其余部分皆为 2 个字符。

    提示:

    S 的长度不超过 12,000,K 为正整数
    S 只包含字母数字(a-z,A-Z,0-9)以及破折号’-’
    S 非空

    class Solution {
        public String licenseKeyFormatting(String S, int K) {
        	
        	 char [] inp=S.toCharArray(); //i1
             int L=inp.length, LL=2*L;
             char [] cal=new char [LL]; //i2
             int i1=L-1,i2=2*L-1,counter=K;
             char c;
             
             while( i1>=0 )
             {
               c=inp[i1--];
               
               if( c!='-' )
               {
                 if(counter==0)
                 {
                   cal[i2--]='-';
                   counter=K;
                 }
                 
                 if(c>='a')
                   c-=32;
                 
                 cal[i2--]=c;
                 counter--;
               }           
             }
             return new String (Arrays.copyOfRange(cal,i2+1,2*L));           
        }
    }
    
  • 相关阅读:
    uva 147 Dollars
    hdu 2069 Coin Change(完全背包)
    hdu 1708 Fibonacci String
    hdu 1568 Fibonacci
    hdu 1316 How Many Fibs?
    poj 1958 Strange Towers of Hanoi
    poj 3601Tower of Hanoi
    poj 3572 Hanoi Tower
    poj 1920 Towers of Hanoi
    筛选法——素数打表
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075017.html
Copyright © 2011-2022 走看看