美文网首页
刷Lintcode,乱序字符(1)

刷Lintcode,乱序字符(1)

作者: 2a25936eedd9 | 来源:发表于2016-12-21 00:05 被阅读0次

    这是一道中等难度的字符串题目。本来按照我的想法,我觉得逻辑上没有问题,但是出在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新手,这种细节还是不太懂,为什么不能这样赋值呢?

    问题:

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

    相关文章

      网友评论

          本文标题:刷Lintcode,乱序字符(1)

          本文链接:https://www.haomeiwen.com/subject/tewfvttx.html