0 1

String字符串5

求路过的大神指点一下思路,最好给出代码。。


问题补充:题目请看图片附件
2013年6月29日 16:53
  • 大小: 53.3 KB

6个答案 按时间排序 按投票排序

0 0

public static void main(String[] args) {
		String[] arr = {"apple Orange", "ORANGE apple",   
        "APPLeoRange", "APPLe oRange grape", "HI There", "THERE hI"};
		
		Map<String, String> cache = new HashMap<String, String>();
		for (String s : arr) {
			char[] ca = s.replaceAll("\\s+", "").toLowerCase().toCharArray();
			Arrays.sort(ca);
			cache.put(new String(ca), s);
		}
		System.out.println(cache.values());
	}

2013年7月10日 16:02
0 0

class Sort {
	private static final String[] strings = {"apple Orange", "ORANGE apple", 
		"APPLeoRange", "APPLe oRange grape", "HI There", "THERE hI"};
	
	public static void main(String...args) {
		final Map<String, String> dict = new LinkedHashMap<String, String>();
		for (String s : strings) {
			dict.put(toKey(toTreeSet(s)), s);
		}
		
		for (String s : dict.values()) {
			System.out.println(s);
		}
	}
	
	private static TreeSet<String> toTreeSet(final String s) {
		final TreeSet<String> set = new TreeSet<String>();
		final StringTokenizer st = new StringTokenizer(s, " ");
		while (st.hasMoreTokens()) {
			set.add(st.nextToken().toLowerCase());
		}
		return set;
	}
	
	private static String toKey(TreeSet<String> set) {
		StringBuilder sb = new StringBuilder(128);
		for (String s : set) {
			sb.append(s);
		}
		return sb.toString();
	}
}

2013年7月01日 10:42
0 0

如果字符串是这样:"a B", "A b", "A b c", "B a", "E F", "F e"

那结果是
"A b c", "B a",  "F e"
还是
"B a",  "F e"

2013年6月30日 16:29
0 0

手里没有IDE,用js实现了个,可参考

http://jsfiddle.net/houfeng0923/Puqma/3/

2013年6月30日 10:28
0 0

package com.cherish.shopping.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;

public class StringUtil {
	/**
	 * 处理字符串数组,将字符串数组转化成list调用dealString(String[] args)处理
	 * @param args
	 * @return 处理后的字符串数组
	 */
	public String[] dealString(String[] args) {
		//List<String> list = Arrays.asList(args);
		List<String> list = new ArrayList<String>();
		for (String s: args) {
			list.add(s);
		}
		dealList(list);
		return list.toArray(new String[list.size()]);

	}
	
	/**
	 * 处理list
	 * @param list
	 * @return 去掉相同只保留最后一个单词的list集合
	 */
	public void dealList(List<String> list) {
		List<String> listTemp = new ArrayList<String>();
		for (int i=0; i<list.size()-1; i++) {
			for (int j=i+1; j<list.size(); j++) {
				if (compareWords(list.get(i), list.get(j))) {
					listTemp.add(list.get(i));
				}
			}
		}
		for (String s: listTemp) {
			list.remove(s);
		}
	}

	/**
	 * 比较两个字符串是否相同(规则1)
	 * @param str1
	 * @param str2
	 * @return true(str1 == str2)
	 */
	public boolean compareWords(String str1, String str2) {
		List<String> listStr1 = getWords(str1);
		List<String> listStr2 = getWords(str2);
		if (listStr1.size() == listStr2.size()) {
			listStr1 = toLowerCase(listStr1);//全部转化成小写
			listStr2 = toLowerCase(listStr2);
			Collections.sort(listStr1);//将两个list排序,就不用考虑顺序的问题了,直接依次比较对应位置的单词是否相同
			Collections.sort(listStr2);
			int num = 0;//相同单词的个数
			for (int i=0; i<listStr1.size(); i++) {
				if (listStr1.get(i).equals(listStr2.get(i))) {
					num ++;
				}
			}
			return num == listStr1.size();
		}
		return false;
	}
	
	/**
	 * 获取字符串里面的所有单词
	 * @param str
	 * @return 装有字符串所有单词的list
	 */
	public List<String> getWords(String str) {
		List<String> list = new ArrayList<String>();
		StringTokenizer tokenizer = new StringTokenizer(str);
		while (tokenizer.hasMoreTokens()) {
			list.add(tokenizer.nextToken());
		}
		return list;
	}
	
	/**
	 * 将list里面每个单词都转化成小写
	 * @param list
	 * @return list(里面的字符串都是小写)
	 */
	public List<String> toLowerCase(List<String> list) {
		List<String> newList = new ArrayList<String>();
		for (String s: list) {
			newList.add(s.toLowerCase());
		}
		return newList;
	}
	
	public static void main(String[] args) {
		String[] arrays = {"apple Orange", "ORANGE apple", "APPLe oRange", "APPLE oRange grape", "HI There", "THERE hI"};
		String[] result = new StringUtil().dealString(arrays);//处理后的结果
		System.out.println("处理前:");
		for (String s: arrays) {
			System.out.print("\"" + s + "\"" + ", ");
		}
		System.out.println();
		System.out.println("处理后:");
		for (String s: result) {
			System.out.print("\"" + s + "\"" + ", ");
		}
	}
}

2013年6月29日 23:21
0 0

package com.chinahrt.zyn.iteye;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class StringColculate {
	
	
	public void compare(String[] s){
		List<String> strList = new ArrayList<String>();
		for(int i=0;i<s.length;i++){
			String s1 = s[i];
			int index = isHave(strList,s1);
			if(index==-1){
				strList.add(s1);
			}else{
				strList.remove(index);
				strList.add(index,s1);
			}
		}
		System.out.println(strList.toString());
	}
	
	//list中是否含有s,有的话返回序号
	public int isHave(List<String> list,String s){
		int index = -1;
		boolean flag = false;
		for(int i=0;i<list.size();i++){
			String str=list.get(i);
			if(isEqual(str,s)){
				index=i;
				break;
			}
			
		}
		return index;
	}
	
	/**
	 * 判断s1和s2是否相等
	 * @param s1
	 * @param s2
	 * @return
	 */
	public boolean isEqual(String s1,String s2){
		if((s1.length())==s2.length()){
			String[] s11 = s1.split(" ");
			String[] s22 = s2.split(" ");
			Set<String> set = new HashSet<String> ();
			for(String str:s11){
				set.add(str.toLowerCase());
			}
			int m = set.size();
			for(String str:s22){
				set.add(str.toLowerCase());
			}
			int n = set.size();
			if(m==n){
				return true;
			}else{
				return false;
			}
		}else{
			return false;
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] s = {"apple Orange","ORANGE apple","APPLe oRange","APPle oRange grape","HI There","THERE hI"};
		StringColculate sc = new StringColculate();
		sc.compare(s);
	}

}

2013年6月29日 22:50

相关推荐

    C++课程设计之string字符串类

    C++课程设计之string字符串类 C++课程设计之string字符串类是C++程序设计中的一部分,主要是通过定义字符串类来实现对字符串的赋值、连接、复制、查找、交换操作。下面是相关的知识点: 一、字符串类的定义 在C++...

    C++实现的String字符串类

    在这个“C++实现的String字符串类”中,我们将探讨类的设计、重载操作符、内存管理以及类的组合。 首先,一个自定义的`String`类通常会包含以下几个核心部分: 1. **数据成员**:存储字符串的实际字符序列,通常是...

    java实现对象转化为get请求的param参数String字符串

    java实现对象转化为get请求的param参数String字符串,本人自测非常好用,一般对象可以转化键值对的格式,但是最近项目需要自己手动拼接对象作为get请求的参数,百度了一堆还不如自己写一个,欢迎各位使用,有什么...

    string字符串含有大写字母将其中大写字母转为小写字母

    标题和描述中提到的问题,即“将含有大写字母的string字符串转为全小写字母”,是字符串处理中的一个基本操作,常见于数据清洗、文本分析或者用户输入的规范化等场景。下面我们将详细探讨这个问题,并给出具体的解决...

    Base64转String字符串小工具

    Base64转String字符串,支持将Base64转化为String字符串

    C语言实现String字符串及其函数stringUtil

    在C语言中,String字符串是字符数组的一种表现形式,它以空字符'\0'作为结束标志。本项目名为"C语言实现String字符串及其函数stringUtil",主要关注的是如何在C语言环境中自定义处理字符串的函数,以扩展标准库中...

    Java程序设计基础:创建String字符串.pptx

    创建String字符串 目录 课程导入 掌握String字符串对象的创建 掌握字符串对象的输入与输出 一般程序需要处理大量文本数据Java语言的文本数据被保存为字符或字符串类型。 若干个字符在计算机里面如何存储? 如何引用...

    Android String字符串数组动态增加

    在Android开发中,String字符串数组是一种常见的数据结构,用于存储一系列相关的文本信息。在某些情况下,我们可能需要在运行时动态地向已存在的字符串数组中添加元素,而非仅仅在XML资源文件中静态定义。这就涉及到...

    详解C++ string常用截取字符串方法

    在C++编程中,`std::string`是一个非常重要的数据类型,用于表示和操作字符串。本文将详细解析两种常用的C++ `std::string`截取字符串的方法:`find`和`find_last_of`,以及如何结合使用它们来满足各种字符串处理...

    String 字符串操作、比较、查找字符、替换、反转、分割等

    - `split(String regex)`:根据给定的正则表达式将字符串分割成多个子字符串,并返回一个包含这些子字符串的数组。 ### 示例代码 ```java public class TestJavaDemo01 { public static void main(String[] args)...

    Android开发之常用必备工具类图片bitmap转成字符串string与String字符串转换为bitmap图片格式

    Android开发之常用必备工具类图片bitmap转成字符串string与String字符串转换为bitmap图片格式 博文介绍:http://blog.csdn.net/qq_21376985/article/details/52083611

    String 字符串讲解

    - `compareTo(String)`根据字典顺序比较字符串,返回值为整数,表示当前字符串与另一个字符串的相对顺序。 - `compareToIgnoreCase(String)`同样进行比较,但忽略大小写。 9. **字符串操作方法**: - `substring...

    C++ DES加密解密string字符串

    输入的明文密文和密钥都采用string格式字符串,加密结果使用base64编码,解密时候也从base64码解密,参考资料:http://blog.sina.com.cn/s/blog_68b606350100yzud.html

    pdf文件转换成string字符串

    将pdf文件转换成字符串,需要pdf签名的可以用到

    java String 字符串格式化

    JDK1.5中,String类新增了一个很有用的静态方法,这些方法有助于开发人员对字符串的各类操作

    C#字符串函数大全.pdf

    MidMid(string,start,length)从string字符串的start字符开始取得length长度的字符串,如果省略第三个参数表示从start字符开始到字符串结尾的字符串 LeftLeft(string,length)从string字符串的左边取得length长度的...

    (c#)字符串转换成字符数组 字符串转换成int 数组

    在本篇文章中,我们将深入探讨如何在C#中将字符串转换为字符数组及整数数组。这是一项在处理文本数据时非常有用的技术,特别是在需要对数据进行解析、格式化或进一步处理的情况下。以下是对该主题的详细解释: ### ...

    C#实现String字符串转化为SQL语句中的In后接的参数详解

    本篇文章将详细介绍如何在C#中实现将一个String字符串转化为适应`IN`后接的参数列表。 首先,我们需要理解`IN`关键字在SQL语句中的作用。`IN`用于指定一个列表,当某字段的值与列表中的任意一项匹配时,返回相应的...

    【Java编程教程】详解Java String字符串.pdf

    2. 使用`new`关键字:如`new String("Hello")`,这会在堆内存中创建新的字符串对象,即使字符串的内容在常量池中已经存在。 Java字符串是不可变的,这意味着一旦创建,就不能改变其内容。如果需要改变字符串,必须...

    String字符串比较1

    Java中的字符串操作是一个重要的知识点,尤其在内存管理和字符串比较方面。在Java中,字符串是不可变的,这意味着一旦创建,就不能更改。字符串的比较通常涉及到`==`和`.equals()`方法,以及`intern()`方法。 首先...

Global site tag (gtag.js) - Google Analytics