刷Lintcode,乱序字符(1)

这是一道中等难度的字符串题目。本来按照我的想法,我觉得逻辑上没有问题,但是出在JAVA上的细节问题。虽然,我的逻辑方法自己觉得很生硬。

题目

给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。

样例

对于字符串数组["lint","intl","inlt","code"]

返回["lint","inlt","intl"]

我的想法

1.首先通过length,即字符串的长度,从开始扫描,找到长度一致的字符串,然后再比较是否是乱序的。

2.如何比较是否是乱序的呢,我的想法是只要是组成这两个字符串的字符是相同的,就算。那么如何比较两个字符串的字符是否相同呢? 我的想法是通过两个for循环比较,声明两个String []变量,比较这两个。

代码





import java.util.List;

import java.lang.instrument.*;

public class Solution {

public static String[] iteration;

public static String[] temp;

public static String[] compare;

Solution() {};

private static void swap(int i, int j) {

}

private  boolean isthesame(String[] a, String[] b) {

for ( int i = 0 ; i < a.length; i ++) {

for ( int j = i; j < b.length; j++) {

if(b[j]==a[i]) {

String tempo = b[j];

b[j] = b[i];

b[i] = tempo;

break;

}

if (j == b.length -1) {

return false;

}

}

}

return true;

}

public String[] anagrams(String[] strs) {

int n = strs.length;

for(int i = 0; i < n; i++) {

for(int j = i + 1; j < n; j++) {

if(strs[j].length() == strs[i].length() ) {

for (int z = 0; z < strs[j].length(); z++) {

this.temp[z]=strs[j].substring(z, z+1);

this.compare[z] = strs[i].substring(z, z+1);

}

}

if (isthesame(this.compare,this.temp)) {

this.iteration[j] = strs[j];

}

}

if(this.iteration.length != 0) {

this.iteration[0] = strs[i];

break;

}

}

return this.iteration;

}

public static void main(String[] args) {

Solution ss = new Solution();

String[]  s={"lint","intl","inlt","code"};

try{ss.anagrams(s);}

catch(Exception e) {

System.out.print("error");

}

}

}

调用结果老是出错,我自己测试了一下,应该是错在this.iteration[j] = strs[j];这样的赋值步骤上,由于我还是JAVA新手,这种细节还是不太懂,为什么不能这样赋值呢?

问题:

虽然我自觉想法没错,但是我还是认为这种暴力解法没有优化,接下来继续想更好的方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,768评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 1,410评论 0 6
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,894评论 0 2
  • 说实话,我承认我是个不喜欢做饭的人。因为我讨厌油烟,讨厌收拾残羹剩汤时的繁琐。可最近我却爱上了做饭,用我老公的话...
    小汐0314阅读 284评论 1 1