IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Java 第 15 课 2000. 反转单词前缀 2165. 重排数字的最小值 -> 正文阅读

[数据结构与算法]Java 第 15 课 2000. 反转单词前缀 2165. 重排数字的最小值

2000. 反转单词前缀

Leetcode

class Solution:
    def reversePrefix(self, word: str, ch: str) -> str:
        idx = word.find(ch) + 1
        return word[:idx][::-1] + word[idx:] if idx != 0 else word
class Solution {
    public String reversePrefix(String word, char ch) {        
        char[] arr = word.toCharArray();
        for (int i = 0, j = word.indexOf(ch); i < j; i++, j--){
            char tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
        }
        return new String(arr);   
    }
}

2165. 重排数字的最小值

Leetcode

class Solution:
    def smallestNumber(self, num: int) -> int:
        nums = list(str(num))
        if nums[0] == '-': nums[1:] = sorted(nums[1:], reverse=True)
        else:
            nums.sort()
            for i in range(len(nums)):
                if nums[i] != '0':
                    nums[0], nums[i] = nums[i], nums[0]
                    break
        return int(''.join(nums))
class Solution {
    public long smallestNumber(long num) {
        char[] nums = String.valueOf(num).toCharArray();
        if (nums[0] == '-') {
            Arrays.sort(nums, 1, nums.length);
            // String s = new StringBuilder(s).reverse().toString();
            // Collections.reverse(Arrays.asList(nums)); // 基本类型当做一个元素对待
            int i = 1, j = nums.length - 1;
            while (i < j){
                char ch = nums[i]; nums[i] = nums[j]; nums[j] = ch;
                i++;j--;
            }            
        } else {
            Arrays.sort(nums);
            for (int i = 0; i < nums.length; i++){
                if (nums[i] != '0'){
                    char ch = nums[i]; nums[i] = nums[0]; nums[0] = ch;
                    break;
                }
            }
        }       
        return Long.parseLong(String.valueOf(nums));
    }
}

基础知识

char 和 String 相互转换

Java 中 char 是基本类型,而 String 是引用类型。

String 转换为 char

String s = "abcd";
int index = 2;
char ch = s.charAt(index);
char[] chars = s.toCharArray();

char、char[] 转换为 String

String s = String.valueOf('c'); // 效率最高
String s = String.valueOf(new char[]{'c'}); // 将一个 char 数组转换成 String
String s = Character.toString('c'); // 方法实际上直接返回 String.valueOf(char)
String s = new Character('c').toString();
String s = "" + 'c'; // 方法简单,效率最低
// Java 中的 String Object 的值实际上是不可变的,是一个 final 的变量。
// 所以每次对 String 做出任何改变,都是初始化了一个全新的 String Object 并将原来的变量指向了这个新 String。
// 而 Java 对使用 + 运算符处理 String 相加进行了方法重载。
// 字符串直接相加连接实际上调用了如下方法:
// new StringBuilder().append("").append('c').toString();
String s = new String(new char[]{'c'});

// char[]、String[] 转 String
char[] data = {‘a’, ‘b’, ‘c’};
String s = new String(data); // 构造函数
String s = String.valueOf(data);
char[] charArr = s.toCharArray(); 

String s = "abc,def,ghi";
String[] strArr= s.split(","); 

String[] arr = {"0123","sb","12f"};
StringBuffer sb = new StringBuffer();
for(int i = 0; i < arr.length; i++){
	sb.append(arr[i]);        
}
	
String s = sb.toString();
String s = new StringBuilder(s).reverse().toString();

带 valueof 逆向,带 to 顺向:
valueOf to

int 与 String 互相转换

1、String 转 int 有两种方式:

Integer.parseInt(str) // 返回 int
Integer.valueOf(str).intValue() // 返回 Integer 对象。
---------------------------------
String str = "123";
int n = 0;

for(int i = 0; i < 100000; i++){
	n = Integer.parseInt(str);
	// n = Integer.valueOf(str).intValue();
}

1、int 转 String 有三种方式

int num = 10;
String str = num + ""; // 比较耗时
String str = String.valueOf(num);
String str = Integer.toString(num);	

采用 String.valueOf(object) 的基础是 Object.toString(),JDK 中 String .valueOf(object) 源码:

public static String valueOf(Object obj){return (obj==null)?"null":obj.toString();}

使用该方法不必担心 object 为 null 的情况,但同时注意当 object 为 null 时该方法返回 “null”,而非 nul l!!!

采用 Integer.toString() 的基础仍是 Object.toString(),因为 java.lang.Object 类中已有 public 方法 toString(),所以对任何严格意义上的 Java 对象都可以调用此方法,但使用时需要注意,必须保证 object 不是 null 值,否则将会抛出NullPointerException 异常!!!

isDigit()+ Integer.parseInt

正则表达式 String.matches("[0-9]*") 检查输入是否为有效数字。

String number = "-100";
int i;
if (String.isDigit(number)) {
    i = Integer.parseInt(number));
} else {
    System.out.println("Please provide a valid digit [0-9]");
}

public static boolean isDigit(String input) {
    // null or length < 0, return false.
    if (input == null || input.length() < 0)
        return false;

    // empty, return false
    input = input.trim();
    if ("".equals(input))
        return false;

    if (input.startsWith("-")) {
        // negative number in string, cut the first char
        return input.substring(1).matches("[0-9]*");
    } else {
        // positive number, good, just check
        return input.matches("[0-9]*");
    }
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-27 11:02:06  更:2022-02-27 11:03:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 15:27:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码