package kws.algo.string;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* User: uchan
* Date: 3/25/12
* Time: 12:56 PM
* To change this template use File | Settings | File Templates.
*/
public class SignalReceiver {
private LinkedList signalReceived = new LinkedList();
private char[] pattern;
public void onReceive(char c){
signalReceived.addLast(c);
int j = 1;
if(signalReceived.size() >= pattern.length) {
for(int i = pattern.length - 1; i > 0; i--){
if(!signalReceived.get(signalReceived.size() - j++).equals(pattern[i])){
return;
}
}
System.out.println("Found the pattern at " + (signalReceived.size() - pattern.length));
}
}
public void setPattern(char[] pattern) {
this.pattern = pattern;
}
public void setReversePattern(char[] pattern) {
setPattern(reverse(pattern));
}
private char[] reverse(char[] pattern) {
char[] reversePattern = new char[pattern.length];
for (int i = 0; i < pattern.length; i++) {
reversePattern[pattern.length - 1- i] = pattern[i];
}
return reversePattern;
}
public static void main(String[] args) {
SignalReceiver signalReceiver = new SignalReceiver();
signalReceiver.setPattern("msc".toCharArray());
// signalReceiver.setReversePattern("ccs".toCharArray());
signalReceiver.onReceive('a'); //0
signalReceiver.onReceive('m'); //1 <----
signalReceiver.onReceive('s'); //2 >----
signalReceiver.onReceive('c'); //3
signalReceiver.onReceive('c'); //4
signalReceiver.onReceive('m'); //5 <----
signalReceiver.onReceive('s'); //6
signalReceiver.onReceive('c'); //7
signalReceiver.onReceive('a'); //8
signalReceiver.onReceive('a'); //9
}
}
Sunday, March 25, 2012
String search on receive a character
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment