描述
输入一个字符串和一个整数 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

京公网安备 11010502036488号