美文网首页
刷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)

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

  • LintCode 乱序字符串

    今天做了一道中等难度的字符串题目,这道题目花了我两个小时,不过也做了不少的思考,写篇日志记录一下我的思考过程。 首...

  • LintCode - 乱序字符串(普通)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 难度:中等 要求: 给出一个字符串数组S,找到其中所有的乱序...

  • Lintcode-乱序字符串

    问题描述如下:给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他...

  • LintCode 171-乱序字符串

    分析 hash的使用

  • 乱序字符(2)

    看了标准答案,说白了这道题的本质就是建立映射。而要使用哈希表来构建这个映射关系。哈希表是现成的,要会使用。最关键的...

  • 乱序字符串

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

  • 程序员常用的刷题网站

    1、Lintcode Lintcode.com——LintCode网站是国内较大的在线编程&测评网站。此网站提供各...

  • LintCode算法刷题之旋转字符串

    链接:旋转字符串 描述 给定一个字符串(以字符数组的形式给出)和一个偏移量,根据偏移量原地旋转字符串(从左向右旋转...

  • [leetcode/lintcode 题解] 解码字符串 ·

    leetcode/lintcode 题解] 解码字符串 · Decode String 【题目描述】 给出一个表...

网友评论

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

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