Java题解 | HJ46 #截取字符串#
截取字符串
https://www.nowcoder.com/practice/a30bbc1a0aca4c27b86dd88868de4a4a
描述
输入一个字符串和一个整数 k ,截取字符串的前k个字符并输出
数据范围:字符串长度满足 1≤n≤1000
, 1≤k≤n
输入描述:
1.输入待截取的字符串
2.输入一个正整数k,代表截取的长度
输出描述:截取后的字符串
示例1
输入: abABCcDEF 6
输出:
abABCc
示例2
输入:
bdxPKBhih
6
输出:
bdxPKB
## 解法 如果是用Java的JDK API来做,就是一行
str.substring(0, k)
但如果是这么简单的话,又要怀疑试题的动机了,是要考验我的智商码? 于是,我不得不将输入的转为字符数组,而后遍历数组取前k,组成字符串输出。 ```java package com.waylau.nowcoder.exam.oj.huawei; import java.util.Scanner; /** * HJ46 截取字符串. * 描述:输入一个字符串和一个整数 k ,截取字符串的前k个字符并输出 * 数据范围:字符串长度满足 `1≤n≤1000` , `1≤k≤n` * 输入描述: * 1.输入待截取的字符串 * 2.输入一个正整数k,代表截取的长度 * 输出描述:截取后的字符串 * 示例1 * 输入: * abABCcDEF * 6 * 输出: * abABCc * 示例2 * 输入: * bdxPKBhih * 6 * 输出: * bdxPKB * * @author <a href="">Way Lau</a> * @since 2022-08-23 */ public class HJ46InterceptString { public static void main(String[] args) { // 输入 Scanner in = new Scanner(System.in); String str = in.nextLine(); int k = Integer.valueOf(in.nextLine()); // 转为字符数组 char[] arr = str.toCharArray(); // 取数组的前k位字符拼接为字符串输出 StringBuilder sb = new StringBuilder(); for (int i = 0; i < k; i++) { sb.append(arr[i]); } // 输出 System.out.println(sb.toString()); // 关闭 in.close(); } }
参考引用
- 本系列归档至https://github.com/waylau/nowcoder-exam-oj
- 《Java 数据结构及算法实战》:https://github.com/waylau/java-data-structures-and-algorithms-in-action
- 《数据结构和算法基础(Java 语言实现)》(柳伟卫著,北京大学出版社出版):https://item.jd.com/13014179.html