1. 程式人生 > >java實現--子串在主串的位置

java實現--子串在主串的位置

package com.wang.day;

public class StringDemo {

	public static void main(String[] args) {
		String mother = "stringhellohaha";
		String son = "hello";
		
		int pos = isSon(mother, son, 1);
		System.out.println(pos);

	}
	/**
	 * 返回子串son在主串mother中第pos開始的位置。
	 * @param mother
	 * @param son
	 * @param pos
	 * @return pos為-1,則表示不存在
	 */
	public static int isSon(String mother,String son,int pos){
		int i = pos; //主串mother當前位置下標處
		int j = 0;//子串son中當前位置下標值,子串從第一個開始
		while (i<=mother.length()-1 && j<=son.length()-1) {//迴圈條件:mother串和son串都沒有比較完
			if(mother.toCharArray()[i] == son.toCharArray()[j]){
				//相等則繼續
				++j;
				++i;
			}else{
				//不相等,則
				i = i-j+1;//主串位置向後移動一位
				j = 0;//子串繼續回到起點
			}
			
		}
		if(j == son.length()){
			return i-j;
		}else{
			return -1;
		}
		
	}

}

相關推薦

java實現--位置

package com.wang.day; public class StringDemo { public static void main(String[] args) { String

Java實現以字串某一位置為界,將它之前的部分與之後的部分互換位置

需求:給定一個字串str和一個整數i,i代表字串中某一個元素的下標,將str[0..i-1]移到這個元素的右側,將str[i+1..len(str)-1]移到這個元素的左側。(要求:時間複雜度為O(N)

算法練習:求字符的最長重復(Java實現)

重復 char數組 ava 時間 sta 位置 length 結束 substr 1. 求字符串的最長重復子串 例如:aaaaaaaaabbbbcccaaassscvvv這裏面的最長重復子串為aaaaaaaaa 算法思路:算法時間復雜度(O(n)) 1. 將這一個字符

求兩個字符的最長公共——Java實現

求解 ont ins oid info ++ 題意 短字符串 clas 要求:求兩個字符串的最長公共子串,如“abcdefg”和“adefgwgeweg”的最長公共子串為“defg”(子串必須是連續的) public class Main03{ // 求解兩個字符號的最

java實現:查詢字串中最長迴文 ---- leetCode notes

Given a string s, find the longest palindromic substring in s. You may assume that the maximum len

編寫演算法,在s的第i個位置前插入t

/*2018資料結構與演算法上機測試題 *15.編寫演算法,在主串s的第i個位置前插入子串t */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h

Java實現-最長無重複字元的

public class Solution { /** * @param s: a string * @return: an integer */

Java 實現求最長迴文

下面以字串12212321為例,經過上一步,變成了 S[] = "$#1#2#2#1#2#3#2#1#";然後用一個數組 P[i] 來記錄以字元S[i]為中心的最長迴文子串向左/右擴張的長度(包括S[i],也就是把該回文串“對摺”以後的長度),比如S和P的對應關係: S 

找出兩個字串中最大的公共java實現

import java.util.HashSet; import java.util.Set; public class Test { public static void main(String[] args) { String

java實現字串匹配問題之求兩個字串的最大公共

轉載請註明出處:http://blog.csdn.net/xiaojimanman/article/details/38924981 最近在專案工作中有一個關於文字對比的需求,經過這段時間的學習,總結了這篇部落格內容:求兩個字串的最大公共子串。 演算法思想:基於圖計算兩字串

java 字串首字母大寫 查詢所在的位置

對於輸入字串s(假設字串只包含字母構成的單詞和空格),完成如下功能: 1. 統計該字串中字母c出現的次數 2. 求該字串的逆 3. 輸出該字串中子串str的所有位置(無需考慮子串疊加現象) 4. 將

求字串的最長重複——Java實現

要求:求一個字串的最長重複子串 思路:使用兩個指標,兩個指標的間隔從1,2,3...依次增大, 同時向右移動兩個指標,在移動的過程中判斷指標位置的字元是否相同,並記錄最長子串的長度。 Java程式碼: public class Solution { // 求解字串中的

給出兩個字串,找到最長公共,並返回其長度,java實現

給出兩個字串,找到最長公共子串,並返回其長度。 您在真實的面試中是否遇到過這個題? Yes 樣例 給出A=“ABCD”,B=“CBCE”,返回 2 注意 子串的字元應該連續的出現在原字串中,這

“最長上升序列,最大連續序列和,最長公共”的Java實現

一、問題描述 這是三道典型的dp問題。 最長上升子序列:在一列數中尋找一些數,這些數滿足:任意兩個數a[i]和a[j],若i<j,必有a[i]<a[j],這樣最長的子序列稱為最長遞增(上升)子序列。 設dp[i]表示以i為結尾的最長遞增子序列的長度,則狀態轉移

最大公共LCS(Java實現

public class Lcs { public static String longest(String s1,String s2){ char ch1[]=s1.toCharArray(); char ch

JAVA實現EXCEL公式專題(四)——字符函數

main 問題 int start boolean java ... ringbuf out substring 直接上代碼:/** * 項目名稱: * 文件說明: ExCEL公式類型:字符串公式 * 主要特點: * 版本:1.0 * 制作人:劉晨曦

KMP模版 && KMP求出現的次數模版

next() bsp blog ext font next while creat count() int next[MAX_LEN]; void creat_next(char *S, int Sn) { int k, q; next[0] = 0;

表示數值的字符Java實現

har str 表示 pre false div scan char log 請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14","

【LeetCode-面試算法經典-Java實現】【008-String to Integer (atoi) (字符轉成整數)】

pre except tco ecif hid pan format 說明 elf 【008-String to Integer (atoi) (字符串轉成整數)】 【LeetCode-面試算法經典-Java實現】【全部題目文件夾索引】 原題

poj 2406 Power Strings求中最多疊加次數

scan processor ces include span for stdio.h std repr #include<stdio.h> #define M 1000010 int n,next[M]; char s[M]; void ge