如何判断一个字符串数组中是否存在两个字符串序列相等?

问题描述

如何判断一个字符串数组中是否存在两个字符串序列相等?不要用时间复杂度为O(n2)的算法,请问具体要怎么做?

解决方案

解决方案二:
publicbooleancompareEqual(String[]strs){booleanflag=false;//字符串数组中是否有两个字符串相等Stringtemp="";for(inti=0;i<strs.length;i++){if(temp.contains(strs[i])){flag=true;break;//若果有重复就直接跳出循环}temp+=strs[i];//将已经比较过的拼接成字符串}returnflag;}

楼主看这样子复合你要求不,设一字符串temp用来存放字符串数组中已经比较了的字符串,遍历取出字符串数据中的元素来和temp字符串做比较看是否该元素是否已经被temp字符串包含
解决方案三:
引用1楼aaron_gzt的回复:

publicbooleancompareEqual(String[]strs){booleanflag=false;//字符串数组中是否有两个字符串相等Stringtemp="";for(inti=0;i<strs.length;i++){if(temp.contains(strs[i])){flag=true;break;//若果有重复就直接跳出循环}temp+=strs[i];//将已经比较过的拼接成字符串}returnflag;}

楼主看这样子复合你要求不,设一字符串temp用来存放字符串数组中已经比较了的字符串,遍历取出字符串数据中的元素来和temp字符串做比较看是否该元素是否已经被temp字符串包含

想法蛮好的,不过不符合要求吧比如{"a","b","ab"};这个按你的算法就相等了
解决方案四:
引用2楼whos2002110的回复:

Quote: 引用1楼aaron_gzt的回复:
publicbooleancompareEqual(String[]strs){booleanflag=false;//字符串数组中是否有两个字符串相等Stringtemp="";for(inti=0;i<strs.length;i++){if(temp.contains(strs[i])){flag=true;break;//若果有重复就直接跳出循环}temp+=strs[i];//将已经比较过的拼接成字符串}returnflag;}

楼主看这样子复合你要求不,设一字符串temp用来存放字符串数组中已经比较了的字符串,遍历取出字符串数据中的元素来和temp字符串做比较看是否该元素是否已经被temp字符串包含

想法蛮好的,不过不符合要求吧比如{"a","b","ab"};这个按你的算法就相等了

你说的也对,的确考虑漏了。如果数组中的元素不包含符号的话,可以试一下这样来做的:publicbooleancompareEqual(String[]strs){booleanflag=false;//字符串数组中是否有两个字符串相等Stringtemp="";for(inti=0;i<strs.length;i++){if(temp.contains(strs[i]+",")){flag=true;break;//若果有重复就直接跳出循环}temp+=strs[i]+",";//将已经比较过的拼接成字符串}returnflag;}

不过如果数组中的元素包含符号的话就需要自己设计一个特别的分隔符才行了

时间: 2024-09-04 09:46:34

如何判断一个字符串数组中是否存在两个字符串序列相等?的相关文章

string-从字符串数组中充填spinner

问题描述 从字符串数组中充填spinner 如何从字符串数组中充填spinner?我知道在array.xml中可以这样实现: ArrayAdapter<CharSequence> gameKindArray = ArrayAdapter.createFromResource(view.getContext()R.array.game_kind android.R.layout.simple_spinner_item); gameKindArray.setDropDownViewResource

ruby 怎么利用正则表达式在把一个字符串数组中的数字放到一个数组中?

问题描述 ruby 怎么利用正则表达式在把一个字符串数组中的数字放到一个数组中?str='100good200bad300ok'问题补充:说错了是把一个字符串中的所有数字放到一个数组中:)问题补充:是 100 200 300不过还是谢谢sunfjun 解决方案 str='100good200bad300ok' str.scan(/d+/)解决方案二:String的这个scan方法真不错, shaquan6776解决方案三:'100good200bad300ok'.split(/[^d]/).re

java-Java中如何截取字符串数组中一段数字按大小进行排序,再输出整个排序后的字符串?

问题描述 Java中如何截取字符串数组中一段数字按大小进行排序,再输出整个排序后的字符串? String[] meg ={"1#zhang#3207237","2#Wang#3207232"...}根据最后的数字大小排序后输出 解决方案 帮助lz实现了一下,望采纳 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.uti

JS 清除字符串数组中,重复元素的实现方法_javascript技巧

JS 清除字符串数组中,重复元素的实现方法 <script language="JavaScript"> <!-- var arrData=new Array(); for(var i=0; i<1000; i++) { arrData[arrData.length] = String.fromCharCode(Math.floor(Math.random()*26)+97); } //document.write(arrData+"<br/&g

js以分隔符分隔数组中的元素并转换为字符串的方法_javascript技巧

如下所示: <html> <body> <script type="text/javascript"> var arr = new Array(3) ; arr[0] = "Jani"; arr[1] = "Hege"; arr[2] = "Stale"; document.write(arr.join() + "<br />");//默认情况下不提供分隔符,

利用Collections工具类获取字符串数组中最长的元素

package cn.com; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; //要求:获取字符串数组中最长的元素 //在这里要利用Collections的另一个max方法 //public static <T> T max(Collection<? extends T> coll, Comparator<?

二分思想判断数组中是否有两数和为sum

1 /* 2 一个N个整数的无序数组,给你一个数sum,求出数组中是否存在两个数,使他们的和为sum O(nlogn) 3 解题思路:先排序 在左右夹击判断,类似二分查找的思想. 4 */ 5 #include <stdio.h> 6 #include <stdlib.h> 7 int find(int a[], int len, int sum, int *x, int *y) 8 { 9 10 int i = 0, j = len - 1; 11 12 if (sum <

C++通过自定义函数找出一个整数数组中第二大数的方法

  本文实例讲述了C++通过自定义函数找出一个整数数组中第二大数的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 const int MINNUMBER = -32767 ; //2字节的Int 0x8000-1, //4字节的Int 0x80000000-1 -2147483647 int find_sec_max( int data[] , int count) { int

c++-//编写一个程序,最多将10个donation值读入到一个double数组中。

问题描述 //编写一个程序,最多将10个donation值读入到一个double数组中. #include int main() { using namespace std; int donation; double average; int sum; int c,i; for(i=1;i<=10;i++) { while(isdigit(donation)) cout<<"Enter "< cin>>donation[i]; sum+=donati