Find longest non repeating sub string from String.
package practice.sample;
public class LogestNonRepeatingString {
 private StringBuilder findLongestSubString(String arsStr) {
  StringBuilder stCurr = new StringBuilder();
  StringBuilder strPremax = null;
  int curLength = 0;
  int maxLength = 0;
  for (int i = 0; i < arsStr.length(); i++) {
   char c = Character.toLowerCase(arsStr.charAt(i));
   int prevIndex = contains(c, stCurr);
   if (prevIndex == -1) {
    stCurr.append(c);
    curLength++;
    if (maxLength < curLength) {
     maxLength = curLength;
    }
   } else {
    if (strPremax == null || (strPremax.length() < stCurr.length())) {
     strPremax = stCurr;
    }
    stCurr = new StringBuilder(stCurr.substring(prevIndex + 1))
      .append(c);
   }
  }
  return stCurr.length() > strPremax.length() ? stCurr : strPremax;
 }
 private int contains(char charAt, StringBuilder st) {
  for (char c : st.toString().toCharArray()) {
   if (c == charAt) {
    return st.toString().indexOf(c);
   }
  }
  return -1;
 }
 public static void main(String args[]) {
  LogestNonRepeatingString l = new LogestNonRepeatingString();
  StringBuilder str = l.findLongestSubString("XYZARPUA");
  System.out.println(str);
 }
}
