您的位置:首页 > 理论基础 > 数据结构算法

java 数据结构之 顺序存储结构 串

2015-07-29 10:48 393 查看
package com.xdl.data_stru;

/**
* @author xudaolong 串的结构本质和char[]这种没什么区别;
*/
@SuppressWarnings("unused")
public class Day_Four_SeqString {

private char[] str;
private int length;

private void init(int max_num) {
this.str = new char[max_num + 1];// 定义中的[]是元素的个数
str[0] = '\0';// 标志
this.length = 0;
}

// 赋值
private void assign(char[] ch) {
this.str = new char[ch.length + 1];
for (int i = 0; i < ch.length; i++) {
this.str[i] = ch[i];
}
this.str[ch.length] = '\0';
this.length = ch.length;
}

// 赋值,和上面没什么差别;
private void assign(Day_Four_SeqString s) {
this.str = new char[s.length + 1];
for (int i = 0; i < s.length; i++) {
this.str[i] = s.str[i];
}
this.str[s.length] = '\0';
this.length = s.length;
}

/**
* @param ch
*            核心:忍法:替身术,追加在原有的str后;
*/
private void concat(char[] ch) {
Day_Four_SeqString str = new Day_Four_SeqString();
str.assign(this.str);
// 上面两句是为了保存已存在的str.然后重置,char[]在初始化的时候已经被设置固定了;
this.str = new char[ch.length + this.length + 1];
for (int i = 0; i < this.length; i++) {
this.str[i] = str.str[i];
}
for (int i = 0; i < ch.length; i++) {
this.str[i + this.length] = ch[i];
}
this.length = this.length + ch.length;
this.str[this.length] = '\0';
}
//求子串
private Day_Four_SeqString substr(int start, int len) {
Day_Four_SeqString str = new Day_Four_SeqString();
//以下条件对输入值 start 和 len 进行控制,触发一个就byebye了,哦,其实挺随意的;
if (start <1 || start > this.length || is_null() || len >this.length -start +1) {
str.init(0);
return str;//空置
}
str.init(this.length);
for (int i = 0; i < len; i++) {
str.str[i] = this.str[i+(start-1)]; //start 对应的下表是start -1;
}
return str;
}
//定位
private int index(char [] ch) {
int i = 0,j = 0;
while (i<this.length&& j<ch.length) {
if (this.str[i]==ch[j]) {
i++;
j++;
}else {
i = i - j +1 ;
j = 0;
}
}
if (j == ch.length) {
return i-ch.length+1;
}
return 0;
}
private boolean is_null() {
if (this.length == 0) {
return true;
}
return false;
}

public int getLen() {
return length;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: