题目:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
我的做法:
import java.util.Scanner;
class puzzle {
String SplitStr;
int SplitByte;
public puzzle(String str, int bytes) {
SplitStr = str;
SplitByte = bytes;
}
public void SplitIt() {
int sl = SplitStr.getBytes().length;
System.out.println("这段字符串的字节数是:" + sl);
char[] cs = SplitStr.toCharArray();
String ss ="";
String bs ="";
for(int i=0;i<cs.length;i++){
char s = cs[i];
ss += String.valueOf(s);
if(ss.getBytes().length == SplitByte){
System.out.println(ss);
ss="";
}
else if(ss.getBytes().length > SplitByte){
if(!"".equa(bs) System.out.println(bs);
ss=String.valueOf(s);
}
bs = ss;
}
System.out.print(ss);
}
public static void main(String[] args) {
System.out.println("输入字符串和字节数");
Scanner scan = new Scanner(System.in).useDelimiter("\\s+|,");
puzzle p = new puzzle(scan.next(), scan.nextInt());
p.SplitIt();
}
}
别人的写法:
package string;
class SplitString
{
private String str;
private int byteNum;
public SplitString(){}
public SplitString(String str,int byteNum)
{
this.str=str;
this.byteNum=byteNum;
}
public void splitIt()
{
byte bt[]=str.getBytes();
System.out.println("Length of this String ===>"+bt.length);
if(byteNum>1)
{
if(bt[byteNum]<0)
{
String substrx=new String(bt,0,--byteNum);
System.out.println(substrx);
}else
{
String substrex=new String(bt,0,byteNum);
System.out.println(substrex);
}
}else
{
if(byteNum==1)
{
if(bt[byteNum]<0)
{
String substr1=new String(bt,0,++byteNum);
System.out.println(substr1);
}else
{
String subStr2=new String(bt,0,byteNum);
System.out.println(subStr2);
}
}else
{
System.out.println("输入错误!!!请输入大于零的整数:");
}
}
}
}
public class TestSplitString
{
public static void main(String args[])
{
String str="我ABC汉DEF";
int num=6;
SplitString sptstr = new SplitString(str,num);
sptstr.splitIt();
}
}
分享到:
相关推荐
1. **字符串循环左移**:给定一个字符串和一个整数k,将字符串中的每个字符向左移动k个位置。例如,字符串"abcdefg",k=2,移动后的结果为"efgabcd"。可以使用双指针技巧,将字符串分为两部分,然后交换它们。 2. *...
下面是关于字符串处理的面试题总结: 一、求字符串的最小后继 问题:实现一个函数,输入一个字符串,输出该字符串的最小后继。例如,“abc”的最小后继为“abd”,“dhz”的最小后继为“di”。 思路:对最后一个...
面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端...
1.字符串高频面试题精讲1.字符串高频面试题精讲1.字符串高频面试题精讲
尤其在面试和笔试环节,对C语言的掌握程度往往成为评价一个程序员能力的重要标准。本资源"《C语言字符串练习(习题+答案).zip》"正是针对这一需求而准备的,它包含了C语言字符串操作的专项练习题和对应的答案,帮助...
在C++编程中,字符串处理是面试中常见的知识点,尤其是涉及到内存操作的部分。本文将深入探讨`memset`、`strcpy`、`memcpy`以及`memmove`这四个函数的使用和区别。 首先,`memset`函数用于填充内存。它的原型是`...
以上解答了C语言中涉及字符串处理的一些基础面试题,实际编程中,我们需要考虑到边界条件、效率优化和错误处理等因素,确保代码的健壮性和正确性。在面试中,理解这些基本概念并能灵活运用是至关重要的。
在第一个示例代码中,使用了字符数组来实现字符串的反转。 ```java public static void main(String[] args) { String str = args[0]; char[] ch = str.toCharArray(); char[] b = new char[ch.length]; for ...
综上所述,解决“C语言面试题之哈希表字符串中的第一个唯一字符”不仅要求掌握C语言的基础语法,还需理解哈希表的原理和应用,以及具备良好的算法设计和分析能力。熟练掌握这些知识点,对于提升C语言编程技能和应对...
java截取字符串,一道面试题。好像没有找到正确答案,今天找时间做了一个,仅供参考。本人运行过了。
标题中的“Code_笔试题_字符串压缩_”指的是一个与编程相关的笔试题目,重点在于实现字符串的压缩功能。这类问题通常出现在技术面试或招聘过程的笔试试题中,旨在考察应聘者的编程能力和对数据结构的理解。 描述中...
在这个"反转字符串"的面试题中,我们将深入探讨如何使用双指针来实现这一任务。 首先,我们需要了解C语言中字符串的基本概念。在C语言中,字符串是由零个或多个字符组成的序列,以空字符'\0'作为结束标志。我们通常...
- `change` 函数:使用两个指针,一个从字符串开始向后移动(`first`),另一个从字符串结束向前移动(`last`),并使用 `swap` 函数交换它们所指向的字符,直到两个指针相遇或交错。 - `rever` 函数:首先,使用 `...
C#面试题字符串转换整数
本题目的核心是输出一个给定字符串的所有子串,这里我们以字符串 "abc" 为例来详细讲解解题思路和方法。 首先,我们需要理解子字符串的概念。在字符串 "abc" 中,它的每一个字符(如 "a", "b", "c")以及由连续字符...
1 将字符串转化为整数。2 将整数转化为字符串(考虑正负号的问题)。3 实现字符串拷贝函数strcpy(程序的完整性)。4 编程实现memcpy函数(以字节为单位的拷贝)。5 编程实现memmove函数。 等笔试题。
3. 查找最长的子字符串:该问题要求编写一个函数,在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。解决方法是使用两个指针,一个指针用于记录当前字符,另一个指针用于记录最长的子字符串...
在本题解中,我们将深入探讨Java编程语言中如何利用哈希表解决LeetCode上的第387题——"字符串中的第一个唯一字符"。这道题目常见于求职面试,是测试程序员对数据结构和算法理解的经典问题。哈希表,又称散列表,是...