今天同事问了一个问题,感觉比较有意思,保存一下。
问题是这样的。比如一个字符串,"123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",从中取任意个数的字符组成新的字符串,比如“2M”,然后+1,这是要得到结果是“2N”,如果是“ZZ”的话,得到的结果应该是“111”。
实现代码如下:
import java.util.*; /** * @Author: bob * @Description: TODO * @Date: 2019/8/27 17:33 */ public class Test { public static String source = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; public static void main(String[] args) { String str = "1ZZ"; String[] strs = str.split(""); String[] sources = source.split(""); Map<String, Integer> map = new HashMap<String, Integer>(); int length = sources.length; for (int i = 0; i < length; i++) { map.put(sources[i], i + 1); } int zhi = 0; for (int i = 0; i < strs.length; i++) { zhi += Math.pow(length, strs.length - 1 - i) * map.get(strs[i]); } zhi += 1; new Test().result(zhi, length); StringBuilder sb = new StringBuilder(); for (int i = list.size() - 1; i >= 0; i--) { sb.append(sources[list.get(i) - 1]); } System.out.println(sb.toString()); } public static List<Integer> list = new ArrayList<Integer>(); private void result(int zhi, int length) { int a = zhi/length; int b = zhi - a*length; list.add(b); if (a > length) { result(a, length); }else { list.add(a); } } }
如果大家有更好的方法的话,请赐教,毕竟我不是科班出身,没学过算法(已经打算要补短板了)。
原文地址:https://www.cnblogs.com/-lanfenglanmeng/p/11421361.html
时间: 2024-10-17 22:30:12