【编程题】黑化的牛牛

链接:https://www.nowcoder.com/questionTerminal/8f744a969c3c4692afd5e92946e96e6e
来源:牛客网

牛牛变得黑化了,想要摧毁掉地球。但他忘记了开启地球毁灭器的密码。牛牛手里有一个字符串S,牛牛还记得从S中去掉一个字符就恰好是正确的密码,请你帮牛牛求出他最多需要尝试多少次密码。
如样例所示S = "ABA",3个可能的密码是"BA", "AA", "AB".
当S = "A", 牛牛唯一可以尝试的密码是一个空的密码,所以输出1.

输入描述:

输入包括一个字符串S,字符串长度length(1 ≤ length ≤ 50),其中都是从'A'到'Z'的大写字母。

输出描述:

输出一个整数,表示牛牛最多需要尝试的密码次数。

示例1

输入

ABA

输出

3

解题思路:去掉其中任意一个字符,剩下的不重复字符串的个数就是最多需要尝试的次数。

package BiShiTi;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class m_0007 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String strSeq = scan.nextLine();
		
		int times = MaxTryNum(strSeq);
		System.out.println(times);
	}
	
	static int MaxTryNum(String strSeq){
		int strLen = strSeq.length();
		
		int times = 0;
		if (strLen == 1) {
			times = 1;
		}else{
			Map<String, Integer> pwMap = new HashMap<String, Integer>();
			
			for (int i = 0; i < strLen; i++) {
				String proSubStr = strSeq.substring(0, i);
				String nxtSubStr = strSeq.substring(i+1, strLen);
				String pwStr = proSubStr + nxtSubStr;
				
				if (pwMap.containsKey(pwStr)) {
					continue;
				}else {
					pwMap.put(pwStr, 1);
				}
			}
			
			for (int pw : pwMap.values()) {
				times += pw;
			}
		}
		
		return times;
	}
}

猜你喜欢

转载自my.oschina.net/MasterLi161307040026/blog/1811085
今日推荐