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

用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;
  }
}

本文内容到此结束了, 如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。 如有错误❌疑问💬欢迎各位大佬指出。 主页共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃