面试题:给定两个字符串s和t,判断这两个字符串中的字母是不是完全一样

举报
宇宙之一粟 发表于 2022/04/24 11:57:54 2022/04/24
【摘要】 Java 中,有很多提供字符串比较的方法。那么,给定两个字符串s和t,判断这两个字符串中的字母是不是完全一样? 使用“==”比较运算符“==”用于检查两个字符串的引用相等性:String s = "Hello, World";String t = "Hello, World"; System.out.println(s == t); // trueSystem.out.println(s....

Java 中,有很多提供字符串比较的方法。那么,给定两个字符串s和t,判断这两个字符串中的字母是不是完全一样?

使用“==”比较运算符

“==”用于检查两个字符串的引用相等性:

String s = "Hello, World";
String t = "Hello, World";
		
System.out.println(s == t); // true
System.out.println(s.equals(t)); // true

python 中,也可以使用 == 或使用 .__eq__ 函数来检查字符串是否相等。

s = "HelloWorld"
t = "HelloWorld"

print(s==t)         # true
print(s.__eq__(t))  # true

使用 equalsIgnoreCase()

equalsIgnoreCase() 方法返回一个布尔值。顾名思义,此方法在比较字符串时忽略字符中的大小写:

String s = "Hello, World";
String t = "hello, world";
		
System.out.println(s.equalsIgnoreCase(t)); // true

使用 compareTo()

compareTo() 方法返回一个 int 类型值,并根据字典或自然排序按字典顺序逐字符比较两个字符串。如果两个字符串相等或两者都为空,则此方法返回 0,如果第一个字符串在参数之前,则返回负数,如果第一个字符串在参数字符串之后,则返回大于零的数字。

String s = "Hello, World";
String t = "Hello, World";
		
System.out.println(s.compareTo(t)); // 0

同理,compareToIgnoreCase() 类似于前面的方法,除了它忽略大小写

字符串与对象类的比较

从 Java 1.7 及更高版本开始,我们可以使用 Objects.equals() 来确保两个对象相等,并且它也适用于 String.class。

对象是一个实用类,其中包含静态equals()方法,在此方案中有用 - 以比较两个字符串。

如果通过使用它们的地址,则两个字符串是相等的,则该方法返回True。“==”。因此,如果两个参数都为null,则返回true,如果恰好一个参数为null,则返回false。

package com.yuzhou1su.RelearnJava;

import java.util.Objects;

public class StringCompareUtil {
	
	public static void main(String[] args) {
		
		String s = "Hello, World";
		String t = "Hello, World";
		
		
		System.out.println(Objects.equals(s, t)); // true
	}
}

自定义比较方法

如果两个字符串长度不相同,一定为 false

然后遍历每个字符串的位置上的字符,每个位置上的字符字母相同为 true。
代码如下:

package com.yuzhou1su.RelearnJava;

public class StringCompareUtil {
	
	public static void main(String[] args) {
		
		String s = "Hello, World";
		String t = "Hello, World";
		
		int lengthOfStringOne = s.length();
		int lengthOfStringTwo = t.length();
		
		boolean isEqual = true;
		
		if (lengthOfStringOne != lengthOfStringTwo) {
			isEqual = false; // 长度不相同一定为 fasle
			System.out.printf(" s == t is %s", isEqual);
		} else {
			for (int i=0; i < lengthOfStringOne; i++) {
				if (s.charAt(i) != t.charAt(i)) {
					isEqual = false;
					break;
				}
			}
			
			System.out.printf("s == t is %s", isEqual);
		}

	}

}

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。