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