字符串排序(算法初阶、快速排序)、只出现一次的数字 II(位运算、数组)、生成随机字符串(图算法、算法高阶)

举报
共饮一杯无 发表于 2023/02/24 11:21:43 2023/02/24
【摘要】 字符串排序(算法初阶、快速排序)用main方法排序(按首字母或按字符串长度) 要求:①输出原数组和排序后的数组②若有“,”“.”不能进行排序,并将不符合排序要求的数组打印出来③不能用API,可用选择、冒泡、快速解答:import java.util.Scanner;class Untitled { public static void main(String[] args) { ...

字符串排序(算法初阶、快速排序)

用main方法排序(按首字母或按字符串长度) 要求:
①输出原数组和排序后的数组
②若有“,”“.”不能进行排序,并将不符合排序要求的数组打印出来
③不能用API,可用选择、冒泡、快速

解答:

import java.util.Scanner;
class Untitled {
   public static void main(String[] args) {
      int num;
      System.out.println("请输入数组元素长度:");
      Scanner in = new Scanner(System.in);
      num = in.nextInt();
      System.out.println("请输入字符串:");
      String str[] = new String[num];
      for (int count = 0; count < num; count++) {
         str[count] = in.next();
      }
      in.close();
      System.out.println("before sorting:");
      int c = 0;
      for (int i = 0; i < num; i++) {
         if (str[i].contains(",") || str[i].contains("."))
            c++;
         System.out.println(str[i]);
      }
      for (int i = 0; i < num - 1; i++) {
         int min = i;
         for (int j = i + 1; j < num; j++) {
            if (str[min].contains(",") || str[min].contains("."))
               min = j;
            else if (str[j].compareTo(str[min]) < 0 && !str[j].contains(",") && !str[j].contains("."))
               min = j;
         }
         if (min != i) {
            String t = str[i];
            str[i] = str[min];
            str[min] = t;
         }
      }
      System.out.println("after sorting:");
      for (int i = 0; i < num - c; i++)
         System.out.println(str[i]);
      System.out.println("invalid items:");
      for (int i = num - c; i < num; i++)
         System.out.println(str[i]);
   }
}

只出现一次的数字 II(位运算、数组)

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 **三次 。**请你找出并返回那个只出现了一次的元素。

示例 1:
输入:nums = [2,2,3,2] 输出:3
示例 2:
输入:nums = [0,1,0,1,0,1,99] 输出:99

提示:

  • 1 <= nums.length <= 3 * 104
  • -231 <= nums[i] <= 231 - 1
  • nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次

**进阶:**你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

解答:

class Solution {
    public int singleNumber(int[] nums) {
        int ret = 0;
        for (int i = 0; i < 32; ++i) {
            int bitnums = 0;
            int bit = 1 << i;
            for (int num : nums) {
                if ((num & bit) != 0)
                    bitnums++;
            }
            if (bitnums % 3 != 0)
                ret |= bit;
        }
        return ret;
    }
}

生成随机字符串(图算法、算法高阶)

生成一个由大写字母和数字组成的6位随机字符串,并且字符串不重复。

class java_384519 {
    public static char[] generate() {
    char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
        'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
    boolean[] flags = new boolean[letters.length];
    char[] chs = new char[6];
    for (int i = 0; i < chs.length; i++) {
      int index;
      do {
        index = (int) (Math.random() * (letters.length));
      } while (flags[index]);
      chs[i] = letters[index];
      flags[index] = true;
    }
    return chs;
  }
}

本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
保持热爱,奔赴下一场山海。🏃🏃🏃

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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