1. package com.java.tencent;
  2.  
  3. public class T_2_longestPalindrome {
  4.  
  5. public String test1(String s){
  6. long startTime=System.currentTimeMillis();
  7. int len = s.length();
  8. int tmp = 0;
  9. String result = "";
  10. for(int i=0;i<len;i++){
  11. if(tmp+i-len>0){
  12. break;
  13. }
  14. int lenj = len-1;
  15. for(int j=lenj;j>=i;j--){
  16. if(tmp>j-i+1){
  17. break;
  18. }
  19. String ch = s.substring(i,i+1);
  20. String chj = s.substring(j,j+1);
  21. if(ch.equals(chj)){
  22. String str = s.substring(i,j+1);
  23. if(tmp>str.length()){
  24. continue;
  25. }
  26. boolean bl = true;
  27. int ln = str.length();
  28. int lenm = ln/2+1;
  29. for(int m=0;m<lenm;m++){
  30. CharSequence start = str.subSequence(m, m+1);
  31. CharSequence end = str.subSequence(ln-m-1,ln-m);
  32. if(!start.equals(end)){
  33. bl = false;
  34. break;
  35. }
  36. }
  37. if(bl && ln>tmp){
  38. result = str;
  39. tmp = ln;
  40. }
  41. }
  42. }
  43. }
  44. System.out.println(result);
  45. long endTime=System.currentTimeMillis();
  46. System.out.println("程序运行时间: "+(endTime-startTime)+"ms");
  47. return result;
  48. }
  49.  
  50. public String test2(String s){
  51. long startTime=System.currentTimeMillis();
  52. int len = s.length();
  53. int tmp = 0;
  54. String result = "";
  55. for(int i=0;i<len;i++){
  56. if(tmp+i-len>0){
  57. break;
  58. }
  59. for(int j=len-1;j>=i;j--){
  60. if(tmp>j-i+1){
  61. break;
  62. }
  63. String str = s.substring(i,j+1);
  64. boolean bl = true;
  65. for(int m=0;m<(str.length()/2+1);m++){
  66. Character start = str.charAt(m);
  67. Character end = str.charAt(str.length()-m-1);
  68. if(!start.equals(end)){
  69. bl = false;
  70. break;
  71. }
  72. }
  73. if(bl && str.length()>tmp){
  74. result = str;
  75. tmp = str.length();
  76. break;
  77. }
  78. }
  79. }
  80. System.out.println(result);
  81. long endTime=System.currentTimeMillis();
  82. System.out.println("程序运行时间: "+(endTime-startTime)+"ms");
  83. return result;
  84. }
  85.  
  86. public static void main(String[] args) {
  87. T_2_longestPalindrome lp = new T_2_longestPalindrome();
  88. String s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
  89. lp.test2(s);
  90. }
  91.  
  92. }

以上写了一个返回最长回文子串的程序(1000个a,回文字串就是如abcddcba、bcb,左右两边相同,当然a一个字符也是),之前使用的test1总是500以上的执行时间,时间总是无法降低,最后问题落到了两个截取字串位置上,经过修改,test2成功降低执行时间。

test1 使用 sub 截取字符串,执行时间500+ms

test2 使用 charAt,执行时间180ms

以上可以明显看出执行效率的不同。

substring,subsequence,charAt执行效率的不同的更多相关文章

  1. sql server中如何查看执行效率不高的语句

    sql server中,如果想知道有哪些语句是执行效率不高的,应该如何查看呢?下面就将为您介绍sql server中如何查看执行效率不高的语句,供您参考.   在测量功能时,先以下命令清除sql se ...

  2. 统计sql语句执行效率

    --统计sql语句执行效率SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N ...

  3. SQl 执行效率总结

    SQL执行效率总结 1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况 p4: 2.4 内存: 1 G os: windows 2003 数据库: ms sql server 2 ...

  4. [SQL] sql server中如何查看执行效率不高的语句

    sql server中,如果想知道有哪些语句是执行效率不高的,应该如何查看呢?下面就将为您介绍sql server中如何查看执行效率不高的语句,供您参考.在测量功能时,先以下命令清除sql serve ...

  5. 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案

    如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...

  6. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因

    复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...

  7. SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率

    为什么我也要说SQL Server的并行: 这几天园子里写关于SQL Server并行的文章很多,不管怎么样,都让人对并行操作有了更深刻的认识. 我想说的是:尽管并行操作可能(并不是一定)存在这样或者 ...

  8. SQL执行效率和性能测试方法总结

    对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能.如何选择SQL语句,本文提供了两种方法,分别对多条SQL进行量化 ...

  9. 优化javaScript代码,提高执行效率

    今天看完书,总结了一下可以如何优化 JavaScript . 1.合并js文件 为优化性能,可以把多个js文件(css文件也可以)合并成极少数大文件.跟十个5k的js文件相比,合并成一个50k的文件更 ...

随机推荐

  1. 石子游戏Kam(bzoj 1115)

    Description 有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数.两人轮流操作每次操作可以从一堆石子中移走任意多石子,但是要保证操作后仍然满足初始时的条件谁没有石子可移时输掉游戏 ...

  2. PHP-CI框架数据库连接默认是长连接,需要注意应用场景

    在CI框架的数据库配置文件中$db['default'] ['pconnect'] = TRUE,永久的数据库连接是指在您的脚本结束运行时不关闭的连接. 当收到一个永久连接的请求时,PHP将检查是否已 ...

  3. 洛谷 [P1337] 平衡点

    模拟退火练手 一道模拟退火的好题 结果一定势能最小 与模拟退火思路高度一致 #include <iostream> #include <cstdio> #include < ...

  4. LOJ#2086. 「NOI2016」区间

    $n \leq 500000$个区间,从中挑出一些,使得至少有一个点被$m$个选中区间包含,且选中区间长度的极差最小. 区间题死脑筋晚期:把区间按左端点排序,然后右端点用个优先队列来弹,然后需要维护下 ...

  5. AtCoder Regular Contest 075 C D E (暂时)

    C - Bugged 题意 给\(n\)个数,找其中的一个子集,使得其和最大,且不是\(10\)的整数倍. 思路 先对\(n\)个数求和, 如果本身即不被\(10\)整除,则即为答案. 否则,如果本身 ...

  6. PyCharm 快捷键总结

    运行 Shift+alt+F10 执行程序 调试 Shift+alt+F9 Debug调试 Shift + F9 对当前文件进行Debug F8 调试模式下 跳过 F7 调试模式下 进入 F9 快速调 ...

  7. 洛谷—— P2884 [USACO07MAR]每月的费用Monthly Expense

    https://www.luogu.org/problemnew/show/P2884 题目描述 Farmer John is an astounding accounting wizard and ...

  8. gradients的一些注意点

    Each variable has a [.grad_fn] attribute that references a Function that has created the Variable(ex ...

  9. mysql共享锁与排它锁

    共享锁shared lock(也叫读锁read lock)又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁.这保证了其 ...

  10. Linux(三) 一些命令

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...