力扣15电话号码字母组合java

class Solution {
    public List<String> letterCombinations(String digits) {
        List<String> ll = new ArrayList<>();
		List<String> ll1 = new ArrayList<>();
        if(digits.equals("")){
            return ll;
        }
		
		String[] strings = digits.split("");
		
		for(int i=0;i<strings.length;i++) {
			int num = Integer.parseInt(strings[i])-2;
			if((i%2)==0) {
				if(i==0) {
					if(num<5) {
						
						ll.add(String.valueOf((char)(97+num*3)));
						ll.add(String.valueOf((char)(97+num*3+1)));
						ll.add(String.valueOf((char)(97+num*3+2)));
					}else {
						if(num==5) {
							ll.add("p");
							ll.add("q");
							ll.add("r");
							ll.add("s");
							
						}else if(num==6){
							ll.add("t");
							ll.add("u");
							ll.add("v");
						}else {
							ll.add("w");
							ll.add("x");
							ll.add("y");
							ll.add("z");
						}
					}
				}else {
					
					for(int q=0;q<ll1.size();q++) {
						if(num<5) {
							ll.add(ll1.get(q)+(char)(97+num*3));
							ll.add(ll1.get(q)+(char)(97+num*3+1));
							ll.add(ll1.get(q)+(char)(97+num*3+2));							
						}else {
							if(num==5) {
								ll.add(ll1.get(q)+"p");
								ll.add(ll1.get(q)+"q");
								ll.add(ll1.get(q)+"r");
								ll.add(ll1.get(q)+"s");			
							}else if(num==6){
								ll.add(ll1.get(q)+"t");
								ll.add(ll1.get(q)+"u");
								ll.add(ll1.get(q)+"v");
							}else {
								ll.add(ll1.get(q)+"w");
								ll.add(ll1.get(q)+"x");
								ll.add(ll1.get(q)+"y");
								ll.add(ll1.get(q)+"z");
							}
						}
						
					}
					
					
					
				}
				ll1.clear();
			}else {
				for(int q=0;q<ll.size();q++) {
					if(num<5) {
						ll1.add(ll.get(q)+(char)(97+num*3));
						ll1.add(ll.get(q)+(char)(97+num*3+1));
						ll1.add(ll.get(q)+(char)(97+num*3+2));							
					}else {
						if(num==5) {
							ll1.add(ll.get(q)+"p");
							ll1.add(ll.get(q)+"q");
							ll1.add(ll.get(q)+"r");
							ll1.add(ll.get(q)+"s");			
						}else if(num==6){
							ll1.add(ll.get(q)+"t");
							ll1.add(ll.get(q)+"u");
							ll1.add(ll.get(q)+"v");
						}else {
							ll1.add(ll.get(q)+"w");
							ll1.add(ll.get(q)+"x");
							ll1.add(ll.get(q)+"y");
							ll1.add(ll.get(q)+"z");
						}
					}
				}
				
				
				ll.clear();
			}							
		}
		if(ll.size()==0) {
			return ll1;
		}
        return ll;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值