牛客网---2016---美团字符串计数
来源:互联网 发布:minecraft java 编辑:程序博客网 时间:2024/06/03 16:31
兔子今早感受到了实验室空调的寒意,舒服到爆炸,啧啧。而且,今天周五诶,周五诶,是时候去吃一波火锅了。。。
题目:
求字典序在s1和s2之间的,长度在len1到len2的字符串的个数,结果mod 1000007。
输入:
每组数据包涵s1(长度小于100),s2(长度小于100),len1(小于100000),len2(大于len1,小于100000)
输出:
输出答案。
解析:
1. 字典序:简单来讲,就是依次比字母, 如boat < boot < cap < card < cat < to < too< two < up
2. 不确定s1和s2哪一个字符串的序列大
解题所需函数:
1 . 比较字符串的大小
// 简单来讲,s1和s2比较,s1小的话输出负数,否则输出正数String s1 = "abc"; String s2 = "abcd"; String s3 = "abcdfg"; String s4 = "1bcdfg"; String s5 = "cdfg"; // -1 (前面相等,s1长度小1) System.out.println( s1.compareTo(s2) ); // -3 (前面相等,s1长度小3) System.out.println( s1.compareTo(s3) ); // 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48) System.out.println( s1.compareTo(s4) ); // -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)System.out.println( s1.compareTo(s5) );
2 . 获取String的某个位置上的数据
// 利用charAt来获取位置,从0开始s1.charAt(0);
代码:
import java.util.*;public class Main{ public static void main(String[] args){ // 录入数据 Scanner in = new Scanner(System.in); while(in.hasNext()){ // 用于记录结果 long result = 0; String s1 = in.next(); String s2 = in.next(); int len1 = in.nextInt(); int len2 = in.nextInt(); // 比较字符串的大小 String temp; if(s1.compareTo(s2)>0){ // 此刻s1比较大 temp=s1; s1=s2; s2=temp; } // 经过if判断语句之后,保证了s1位较小方 int i; // 获取s1和s2长度的最小值和最大值 int maxlen = s1.length()>s2.length()?s1.length():s2.length(); int minlen = s1.length()<s2.length()?s1.length():s2.length(); for(i=0;i<len2;i++){ int dis; if(i<minlen){ dis=s2.charAt(i)-s1.charAt(i); }else{ dis = s2.charAt(i)-'a'+1; } long now=0; int j; for(j=len1;j<=len2;j++){ // j-i-1 此点到判断点的距离 if(j-i-1>=0){ now=now+(long)Math.pow(26,j-i-1); } } now = (now*dis)%1000007; result+=now; } // 减去最后一个默认重合的点 System.out.println(result-1); } }}
存疑:
我知道上面的方法可能很简单,但是有点难以理解,至少我是这么觉得的,因为dis=s2.charAt(i)-s1.charAt(i);的计算结果不能始终为正数,而是默认先计算了一部分,而后又减去了一部分,啧啧,有点难理解的哟。
阅读全文
0 0
- 牛客网---2016---美团字符串计数
- 美团-字符串计数-Java
- 字符串计数(字典序)---- 美团2016研发工程师在线编程题
- 动态规划-美团笔试-字符串计数-恶心的dp
- [计数] 美团 CodeM 复赛 排列
- 美团在线编程2016---字符串
- 字符串计数
- 字符串计数
- 字符串计数
- 字符串计数
- 字符串计数
- 字符串计数
- 字符串计数
- 对输入字符串计数!
- 字符串计数排序
- USTCOJ 1365 字符串计数
- 字符串计数问题
- 字符串计数-Qsort
- Java_基础—用LinkedList模拟栈数据结构的集合并测试
- python爬虫练习2
- 基于Qt的简易通用开发框架
- hdu1754-I Hate It 线段树RMQ算法求区间最值问题
- exists,in的区别-mysql
- 牛客网---2016---美团字符串计数
- 正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
- 十步完全理解 SQL
- Pyspider实例之抓取小米众筹产品
- Spark-Streaming的window滑动窗口及热点搜索词统计案例
- springMVC+spring+hibernate基础配置文件
- SQL SERVER运维日记--收缩数据库
- Mysql
- 上传更新后的文件 use scp