1472. 双胞胎字符串

给定两个字符串 s和t,每次可以任意交换s的奇数位或偶数位上的字符,即奇数位上的字符能与其他奇数位的字符互换,而偶数位上的字符能与其他偶数位的字符互换,问能否经过若干次交换,使s变成t。

样例
给出 s=“abcd”,t=“cdab”,返回"Yes"。

解释:
第一次a与c交换,第二次b与d交换。
给出 s=“abcd”,t=“bcda”,返回"No"。

解释:
无论如何交换,都无法得到bcda。
注意事项
字符串长度均不超过100000100000
字符串可由大写字母、小写字母及数字组成


解答过程:
第一次结果:中间错误

public class Solution {/*** @param s: the first string* @param t: the second string* @return: If they are twin strings*/public String isTwin(String s, String t) {// Write your code hereif(s == null || t == null){return "No";}if(s.length() != t.length()) return "No";char[] char_s = s.toCharArray();char[] char_t = t.toCharArray();boolean flag = false;for (int i = 0; i< char_s.length ; i=i+2 ) {for (int j = 0; j< char_t.length ; j=j+2 ) {if(char_s[i] == char_t[j]){flag = true;}}if(flag == false){return "No";}else{flag = false;}}for (int i = 1; i< char_s.length ; i=i+2 ) {for (int j = 1; j< char_t.length ; j=j+2 ) {if(char_s[i] == char_t[j]){flag = true;}}if(flag == false){return "No";}else{if(i ==  char_s.length-2 || i ==  char_s.length-1){flag = true;}else {flag = false;}}}if(flag == true){return "Yes";}else {return "No";}}/***主函数*/public static void main(String[] args) {Solution solution = new Solution();String twin = solution.isTwin("abcd", "cbad");System.out.println(twin);}
}

虽然可以运行出结果,但是时间复杂度为O(N2);运行耗时6370ms。时间耗时太长了!!!

还发现其中的逻辑错误!当输入"abad", "cbad"时候,输出的结果还是会Yes,这是不争取的!!

为了提高效率,修改其中的业务逻辑
后期发现其中逻辑错误:修改后的代码如下,通过!!

 package test;public class Solution {/*** @param s: the first string* @param t: the second string* @return: If they are twin strings*/public String isTwin(String s, String t) {// Write your code hereif(s == null || t == null){return "No";}if(s.length() != t.length()) return "No";char[] char_s = s.toCharArray();char[] char_t = t.toCharArray();boolean flag = false;for (int i = 0; i< char_s.length ; i=i+2 ) {for (int j = i; j< char_t.length ; j=j+2 ) {if(char_s[i] == char_t[j]){char tem = char_t[i];char_t[i] = char_t[j];char_t[j] = tem;flag = true;break;}}if (char_s[i] != char_t[i]) {return "No";}}for (int i = 1; i< char_s.length ; i=i+2 ) {for (int j = 1; j< char_t.length ; j=j+2 ) {if(char_s[i] == char_t[j]){char tem = char_t[i];char_t[i] = char_t[j];char_t[j] = tem;flag = true;break;}}if (char_s[i] != char_t[i]) {return "No";}}return "Yes";}public static void main(String[] args) {Solution solution = new Solution();String twin = solution.isTwin("abcd", "cbad");System.out.println(twin);}}

修改后的逻辑总耗时772ms。


感悟:
在线测试中的第二道题目中:犯了两个错误!!
(1)审题不清楚!没有理清楚其中的逻辑实现,急躁着写出代码逻辑错误!!
(2)题目中没有想好优化的地方,细节决定成败!!缺点!!

1472. 双胞胎字符串相关推荐

  1. 、有以下两组数据: 整型数组:1789,2035,1899,1456,2013,1458,2458,1254,1472,2365 字符串数组:“Java”,”Python”,”PHP”,”CProgr

    .有以下两组数据:整型数组:1789,2035,1899,1456,2013,1458,2458,1254,1472,2365字符串数组:"Java","Python&q ...

  2. 有以下两组数据: 整型数组:1789,2035,1899,1456,2013,1458,2458,1254,1472,2365 字符串数组:“Java”,”Python”,”PHP”,”CProg

    有以下两组数据: 整型数组:1789,2035,1899,1456,2013,1458,2458,1254,1472,2365 字符串数组:"Java","Python& ...

  3. c语言双胞胎字符串个数,怀双胞胎的概率有多大 八十九个孕妇中会有一个

    对于备孕阶段的夫妻来说,虽然怀上双胞胎的可能是可遇不可求的,但还是要抱着美好的期待的,今天小编就带你来了解一下究竟怀双胞胎的几率有多大?今天小编就带你来了解一下吧! 双胞胎概率多大 生双胞的概率,全世 ...

  4. 逆向笔记 | 破解极域学生端密码并实现窗口化屏幕广播

    前言: 学校上计算机课时,经常敲代码敲到一半就被老师广播屏幕,这很无奈.其实一种简单的方法是任务管理器里结束 StudentMain.exe 便可躲过屏幕广播.但无法接收文件,同时老师讲课重要点没听到 ...

  5. Python 300例——006-010

    下一个更大的数字 """ 问题:两个不重复的数组1和数组2,其中数组1是数组2的子集,再数组2中相应位置找到数组1所有元素的下一个更大数字数组1中的数字x的下一个更大数字 ...

  6. 【Python】入门案例001-010

    昨天看见一本书叫<Python编程300例:快速构建可执行高质量代码>,今天来实现以下,顺便贴在博客里,接下来每10例发一条博客,以便后期查询相关案例,也供大家参考实现. 文章目录 001 ...

  7. Java如何拼接字符串

    StringBuilder 的 append() 方法 "循环体内,拼接字符串最好使用 StringBuilder 的 append() 方法,而不是 + 号操作符" 这句话,我们 ...

  8. 如何比较 Java 的字符串

    在逛 Stack Overflow 的时候,发现了一些访问量像喜马拉雅山一样高的问题,比如说这个:如何比较 Java 的字符串?访问量足足有 370万+,这不得了啊!说明有很多很多的程序员被这个问题困 ...

  9. java 如何跟多个字符串比较_Stack Overflow上370万浏览量的一个问题:如何比较Java的字符串...

    在逛 Stack Overflow 的时候,发现了一些访问量像喜马拉雅山一样高的问题,比如说这个:如何比较 Java 的字符串?访问量足足有 370万+,这不得了啊!说明有很多很多的程序员被这个问题困 ...

最新文章

  1. 详细!看看顶级互联网公司都在研究的无服务器架构!
  2. EF使用Fluent API配置映射关系
  3. 一位Java大牛的BAT面试心得与经验总结,挥泪整理面经
  4. 七、Sqoop架构,安装和基本使用
  5. java 判断精度_随笔⑦ Java中的比较 ==,equals以及精度对比较的影响
  6. java –cp ./:_成为Java流专家–第2部分:中级操作
  7. ObjectContext.Refresh
  8. 红米K20 Pro拍照样张出炉:后置4800万像素高清三摄
  9. thinkphp5 open_basedir 补充
  10. 二维光子晶体带隙仿真Matlab完全程序_平面波展开法
  11. Docker_制作docker镜像
  12. 川崎机器人f控制柜接线图_Kawasaki川崎机器人控制柜维修
  13. 鸿蒙系统u盘制作,WINDOWS系列 篇二:【保姆级】Windows 10安装版原版系统U盘制作及系统安装教程...
  14. Deepfool阅读笔记
  15. 正式工作后的一些变化和感受
  16. 四层负载均衡 动静分离和资源分离 Rewrite rewrite伪静态实例
  17. python计算定积分
  18. 背包问题——01背包
  19. Linux内核TC工具链路带宽设计--CBQ队列规定
  20. windows系统bat批处理 微信多开,软件多开

热门文章

  1. 德国DANLY不锈钢涡卷压缩弹簧9-3248-26
  2. python将多个txt文件进行上下合并
  3. OpenGL之——多纹理,混合纹理设置渲染
  4. excel小技巧-转置(表的横向纵向倒过来)
  5. swift获取openuuid_获取iOS设备唯一标示UUID——Swift版
  6. mysql命令查看事件调度_mysql 5.1事件调度器 状态查看、开启命令,以及测试
  7. ios事件-触摸事件2(手势 和 pointInSide()、hitTest()、touchesBegan()、touchesMoved()、touchesEnded()的关系)
  8. Linux 中 /etc/hosts 文件的用途是什么
  9. 如何通过request对象获取用户IP地址
  10. 科技进步能否解决老龄化问题?