JAVA常见算法题(十一)

本文通过一个具体的编程示例介绍了如何使用Java代码来找出由数字1、2、3、4组成的不重复的三位数及其总数。该示例展示了多重循环的应用,并通过条件判断实现了数字的唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.xiaowu.demo;


/**
 * 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
 * 
 * 
 * @author WQ
 *
 */
public class Demo11 {
    public static void main(String[] args) {
        number();
    }

    public static void number() {
        int count = 0;
        for (int x = 1; x < 5; x++) {
            for (int y = 1; y < 5; y++) {
                for (int z = 1; z < 5; z++) {
                    if (x != y && y != z && x != z) {
                        int number = x * 100 + y * 10 + z;
                        System.out.print(number + "\t");
                        count++;
                        if (count % 10 == 0) {
                            System.out.println();
                        }
                    }
                }
            }
        }
        System.out.println("\n共有" + count + "个三位数");
    }
}

 

### 常见Java 算法面试题及解答 #### 字符串匹配算法实现 字符串匹配是一个经典的编程问题,在给定的大字符串 `haystack` 中找到子字符串 `needle` 的起始位置。如果不存在,则返回 `-1`。 ```java public static int strStr(String haystack, String needle) { int strLg = haystack.length(); int findLg = needle.length(); for (int i = 0; i + findLg <= strLg; i++) { boolean flag = true; for (int j = 0; j < findLg; j++) { if (haystack.charAt(i + j) != needle.charAt(j)) { flag = false; break; } } if (flag) { return i; } } return -1; } ``` 此代码实现了简单的暴力匹配算法,时间复杂度为 O(n * m),其中 n 是大字符串长度,m 是模式串长度[^2]。 #### 数组去重操作 另一个常见的问题是去除数组中的重复项并保持原有顺序不变: ```java import java.util.*; public static Integer[] removeDuplicates(Integer[] nums) { if (nums == null || nums.length == 0) { return nums; } Set<Integer> seen = new LinkedHashSet<>(Arrays.asList(nums)); return seen.toArray(new Integer[seen.size()]); } ``` 这段优化后的版本利用了集合数据结构来自动处理重复元素,并且保留原始列表中首次出现的位置关系[^3]。 #### 反射机制简介 Java 提供了一种称为反射的功能,允许程序在运行期间动态加载类文件、创建对象实例以及访问字段和方法等特性。这可以通过 Class 类及其关联的方法完成,比如 getClass(), getDeclaredFields() 和 invoke() 等[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值