算法笔试题:LUCKY STRING

来源:互联网 发布:2017勇士vs骑士g4数据 编辑:程序博客网 时间:2024/05/25 12:22

本题是来自微软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){    }}


0 0
原创粉丝点击