子串

子串

https://ac.nowcoder.com/acm/problem/13253

题目:
给出一个正整数n,我们把1..n在k进制下的表示连起来记为s(n,k),例如s(16,16)=123456789ABCDEF10, s(5,2)=11011100101。现在对于给定的n和字符串t,我们想知道是否存在一个k(2 ≤ k ≤ 16),使得t是s(n,k)的子串。

java 代码:
(参考了题解,依次算出各种进制所对应的字符串,进行比对,用了StringerBuilder的indexOf函数,暴力解法,可以通过,细节可能不完善)

import java.util.*;
public class Main{
    public static void main(String[] args)
   {
        int flag=0;
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        String s = sc.next();
        if(s!=null)
       {            
            for(int i=2;i<=Math.min(n+1,16);i++)
            {
              StringBuilder ss = new StringBuilder();
              for(int j=1;j<=n;j++)
              {
                 int num = j;
                 StringBuilder sss = new StringBuilder();
                while(num>0)
               {
                 int k = num % i;
                 if(k > 9)
                 {
                     sss.append((char)('A'+k-10));
                 }
                 else
                 {
                     sss.append(k);
                 }
                    num=num/i;        
               }  
                  sss.reverse();
                  ss.append(sss);
              }
                if(ss.indexOf(s)>=0) {System.out.println("yes");flag=1;break;}
            }
        if(flag==0) System.out.println("no");
    }
    else
    {System.out.println("no");}
   }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
02-14 11:10
点赞 评论 收藏
分享
KPLACE:首先是板面看起来不够,有很多奖,比我厉害。项目要精减,大概详细描述两到三个,要把技术栈写清楚,分点,什么算法,什么外设,怎么优化,不要写一大堆,分点,你写上去的目的,一是让别人知道你做了这个知识点,然后在面试官技术面的时侯,他知道你会这个,那么就会跟你深挖这个,然后就是个人评价改为专业技能
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务