美团字典序笔试题
来源:互联网 发布:德云色衣服淘宝店网址 编辑:程序博客网 时间:2024/05/16 11:02
<span style="color: rgb(51, 51, 51); font-family: arial, STHeiti, 'Microsoft YaHei', 宋体; font-size: 14px; line-height: 19.6px;">求字典序在s1和s2之间的,长度在len1到len2的字符串的个数,结果mod 1000007。</span>
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String[] input = sc.nextLine().split(" "); String str1 = input[0]; String str2 = input[1]; int min = Integer.parseInt(input[2]); int max = Integer.parseInt(input[3]); long sum1 = 0; long sum2 = 0; for (int i = min; i <= max; ++i) { sum1 += pos(str1, i); sum2 += pos(str2, i); } System.out.println(sum2 - sum1 - 1); } sc.close(); } public static long pos(String s, int len) { if (s == null || s.length() == 0) { return 0; } char[] chs = s.toCharArray(); long pre = 0; long res = 0; if (s.length() <= len) { for (int i = 0; i < s.length(); ++i) { pre = 26 * pre + chs[i] - 'a'; res = pre + 1; } for (int i = s.length(); i < len; ++i) { pre = 26 * pre; res = pre; } } else { for (int i = 0; i < len; ++i) { pre = 26 * pre + chs[i] - 'a'; res = pre + 1; } } return res; }
其中最关键的是pos函数,它采用的思想是用一个pre变量表示在字符串s的当前字符可自由变化的前缀个数,当位置不超过字符串长度的时候,pre=26*pre+chs[i]-'a',结果变量res=pre+1,因为要加上字符本身。如果位置超过了字符串长度,pre=26*pre,res=pre。
答题思路来自于左程云老师,非常感谢!
0 0
- 美团字典序笔试题
- [笔试练习]美团笔试题
- 一道美团笔试题
- 美团笔试题:拜访
- 美团点评笔试题
- 美团2014校招笔试题
- 2014美团哈尔滨笔试题
- 美团笔试题2014--武汉
- 美团笔试题--蓄水池蓄水量问题
- 美团2015校园招聘笔试题
- 美团2015部分笔试题
- 美团笔试题 最大差值
- 动态规划-美团笔试题-拜访
- 美团笔试题(JavaScript)
- 美团笔试题:股票交易日
- 美团点评校招笔试题
- 美团笔试编程题-9.11
- 美团笔试之编程题
- 开发优化-经理优化
- pthread_exit(void *rval_ptr)和pthread_join(pthread_t thread, void **rval_ptr)
- 规则引擎drools
- 使用CSV文件处理EXcel数据
- Java NIO框架--Netty4的简单示例
- 美团字典序笔试题
- git coding 代码备份库 简单命令使用
- 1.3:Union-Find算法-----quick-union算法的改进(加权的quick-union算法)
- 【codevs2293】山海经 线段树
- 第二章 学习CC3200输入和中断
- 使用struts2生成图片验证码并显示
- corethink功能模块探索开发(二)让这个模块可安装
- 深入JVM彻底剖析前面ygc越来越慢的case
- 机器学习入门教程01