java字符串练习题3、字符串中字符是否相同判断

简介: java字符串练习题3、字符串中字符是否相同判断

java字符串练习题3、字符串中字符是否相同判断


这个题目也是没什么难度,需要使用的函数也就是charAt函数,根据对应下标来判断是否有重复的值内容,如果出现不是重复的我们就直接break返回结果即可,效率不会很低。

判断字符串中的字符都不相同

我们使用的是嵌套for循环第一层循环用于做比较对象a,内层循环用作比较对象b,其中下标相同的时候遍历的肯定是一样的值,我们需要将一样的值提出,这样才能保持数据的准确性,还需要判断两个字符是否相等,注意,这里是【字符】别写成字符串,字符串无法使用==进行判断。

三种解题思路

基本上都是一个套路,就是向后挨个查,只要有不相同的就结束输出结果就OK。

方法有无限种,我并没有测试运行的时间,但是第三种的效率可能会高一些,如果有兴趣的话可以测试一下时间。

package com.item.action;
public class Demo3 {
  public static void main(String[] args) {
    String s = "我我的我我";
    // 方法1、使用的是选择排序的方式进行判断的
    boolean result = true;
    a: for (int i = 0; i < s.length(); i++) {
      for (int j = 0; j < s.length(); j++) {
        if (i != j) {
          if (s.charAt(i) == s.charAt(j)) {
            continue;
          }
          result = false;
          break a;
        }
      }
    }
    System.out.println(result ? "1相同" : "1不同");
    //方法2,也是使用选择
    boolean result1 = true;
    a: for (int i = 0; i < s.length(); i++) {
      for (int j = 0; j < s.length(); j++) {
        if ((s.charAt(i) != s.charAt(j)) && i != j) {
          result1 = false;
          break a;
        }
      }
    }
    System.out.println(result1 ? "2相同" : "2不同");
    // 方法3、冒泡的方式
    boolean result2 = true;
    for (int i = 0; i < s.length() - 1; i++) {
      if (s.charAt(i) != s.charAt(i + 1)) {
        result2 = false;
        break;
      }
    }
    System.out.println(result2 ? "3相同" : "3不同");
    // 方法4、转char试试
    boolean result3=true;
    char[] cs = s.toCharArray();
    int temp=cs[0];
    for (int i = 1; i < cs.length; i++) {
      if(temp!=cs[i]) {
        result3=false;
        break;
      }
    }
    System.out.println(result3 ? "4相同" : "4不同");
  }
}

这里由于出现相同的结果就会直接做【return】/【break】操作,故而除非有相同的元素我们才能在最后输出一条符合标准的语句,不需要做单独的判断。

这个判断应用在很多的小题中,判断去重等操作也都类似,找到对应下标进行具体的数组增删改查操作,难度有一些,但是只是有一些,稍微用点心就能拿下的这个小题目。

我记得这个题在全排列中可以作为一个最开始的判断,如果都是相同的字符,那么也就没有全排列的必要了。全排列我这里先稍微涉猎一下,我们会在后期对全排列进行深入的讲解与实操。

全排列

从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

公式:全排列数f(n)=n!(定义0!=1)

这里的!不是非的含义,这里代表的是阶乘的含义,阶乘就是一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

相关文章
|
10天前
|
Java
Java 字符串分割split空字符串丢失解决方案
Java 字符串分割split空字符串丢失解决方案
|
12天前
|
人工智能 Java
Java练习题-输出二维数组对角线元素和
Java练习题-输出二维数组对角线元素和
19 1
|
1月前
|
存储 Java
JAVA字符串与其他类型数据的转换
JAVA字符串与其他类型数据的转换
27 4
|
10天前
|
存储 Java 数据库连接
java使用mp持久化框架,写入5000个字符,但是VARCHAR(255) 会报错
使用Java的MyBatis Plus框架时,如果尝试将超过VARCHAR(255)限制的字符串(如5000个字符)存入数据库,会抛出异常。解决方法是将列类型改为TEXT。可通过在实体类属性上添加`@TableField(typeHandler = JdbcType.CLOB)`注解,如`private String content;`,将属性映射到CLOB类型列,以存储更长字符串。
9 0
|
12天前
|
Java
Java练习题-输出斐波那契(Fibonacci)数列
Java练习题-输出斐波那契(Fibonacci)数列
15 1
|
12天前
|
Java 索引
Java练习题-用冒泡排序法实现数组排序
Java练习题-用冒泡排序法实现数组排序
14 2
|
12天前
|
Java
Java练习题-键盘录入字符串实现大小写转换
Java练习题-键盘录入字符串实现大小写转换
20 2
|
13天前
|
存储 安全 Java
Java中实现高效的字符串拼接技术
【4月更文挑战第6天】在Java编程中,字符串拼接是一个常见的操作。然而,由于字符串的不可变性,频繁的拼接操作可能会导致性能问题。本文将探讨Java中实现高效字符串拼接的技术,包括使用StringBuilder类、StringBuffer类以及Java 8中的StringJoiner类。通过对比这些技术的优缺点,我们将为您提供在不同场景下选择合适的字符串拼接方法的建议。
|
18天前
|
SQL Java 数据库连接
Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
11 0