同事问的一个问题

Posted -lanfenglanmeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了同事问的一个问题相关的知识,希望对你有一定的参考价值。

今天同事问了一个问题,感觉比较有意思,保存一下。

问题是这样的。比如一个字符串,"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);
        
    

如果大家有更好的方法的话,请赐教,毕竟我不是科班出身,没学过算法(已经打算要补短板了)。

以上是关于同事问的一个问题的主要内容,如果未能解决你的问题,请参考以下文章

程序员加入新团队必问的 20 道问题

程序员加入新团队必问的20道问题

再谈闭包

你应该要知道的vue.js

靠...我被同事和领导嘲笑了,因为不会Python接口自动化?

尴尬...我居然被领导和同事嘲笑了,因为不会Python接口自动化?