算法笔试题:LUCKY STRING

    xiaoxiao2021-03-25  71

    本题是来自微软2016年校招题

    LUCKY STRING

    题目描述

    A string s is LUCKY if and only if the number of different characters in s is a fibonacci number. Given a string consisting of only lower case letters , output all its lucky non-empty substrings in lexicographical order. Same substrings should be printed once. 
    输入描述:
    a string consisting no more than 100 lower case letters.
    输出描述:
    output the lucky substrings in lexicographical order.one per line. Same substrings should be printed once.
    输入例子:
    aabcd
    输出例子:
    a aa aab aabc ab abc b bc bcd c cd d 额其实没啥好说的。。题目意思看懂就行了。意思就是一个字符串里面的字符种类数量为 fibonacci 函数里面的数字的时候,把他截取出来,重复的只输出一次,另外按照字典序输出

    import java.util.*; public class Main { public static void main(String args[]){ Scanner in=new Scanner(System.in); while(in.hasNext()){ String str=in.nextLine(); TreeMap<String,Integer> list=new TreeMap<>(); HashSet<Integer> table=new HashSet<>(); table.add(1); table.add(2); table.add(3); table.add(5); table.add(8); table.add(13); table.add(21); for(int i=0;i<str.length();i++){ HashSet<Character> set=new HashSet<>(); int count=0; for(int j=i;j<str.length();j++){ if(!set.contains(str.charAt(j))){ set.add(str.charAt(j)); count++; } if(table.contains(count)){ String temp=str.substring(i,j+1); if(!list.containsKey(temp)){ list.put(temp,1); } } } } for (Map.Entry<String,Integer>entry:list.entrySet()) { System.out.println(entry.getKey()); } } } private static void help(int[] nums){ } }

    转载请注明原文地址: https://ju.6miu.com/read-40543.html

    最新回复(0)