Мы можем найти все палиндромы всей длины, используя это.
Образец:
word = abcdcbc
modifiedString = a # b # c # d # c # b # c
palinCount = 1010105010301
длина самого длинного палиндрома = 5;
самый длинный палиндром = bcdcb
открытый класс MyLongestPalindrome {
static String word;
static int wordlength;
static int highestcount = 0;
static int newlength;
static char[] modifiedString; // stores modified string
static int[] palinCount; // stores palindrome length at each position
static char pound = '#';
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
System.out.println("Enter String : ");
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader bfr = new BufferedReader(isr);
word = bfr.readLine();
wordlength = word.length();
newlength = (wordlength * 2) - 1;
convert();
findpalindrome();
display();
}
// Inserting # in string
public static void convert() {
modifiedString = new char[newlength];
int j = 0;
int i;
for (i = 0; i < wordlength - 1; i++) {
modifiedString[j++] = word.charAt(i);
modifiedString[j++] = pound;
}
modifiedString[j] = word.charAt(i);
}
// display all palindromes of highest length
public static void display() {
String palindrome;
String s = new String(modifiedString);
System.out.println("Length of longest palindrome = " + highestcount);
for (int i = 0; i < newlength; i++) {
if (palinCount[i] == highestcount) {
palindrome = s.substring(i - (highestcount - 1), i
+ (highestcount));
i = i + (highestcount - 1);
palindrome = palindrome.replace("#", "");
System.out.println(palindrome);
}
}
}
// populate palinCount with length of palindrome string at each position
public static void findpalindrome() {
int left, right, count;
palinCount = new int[newlength];
palinCount[0] = 1;
palinCount[newlength - 1] = 1;
for (int i = 1; i < newlength - 1; i++) {
count = 0;
left = i - 1;
right = i + 1;
;
if (modifiedString[i] != pound)
count++;
while (left >= 0 && right < newlength) {
if (modifiedString[left] == modifiedString[right]) {
if (modifiedString[left] != pound)
count = count + 2;
left--;
right++;
} else
break;
}
palinCount[i] = count;
highestcount = count > highestcount ? count : highestcount;
}
}
}
У нас была подобная проблема. Это было решено, когда все JSPs были сохранены с BOM UTF-8.
Проверьте установку соединителя в своей конфигурации кота. Существует опция (URIEncoding), можно установить для обработки URIs как UTF-8. По умолчанию их рассматривают как ISO-8859-1.
Прежде всего я понятия не имею , как для решения этого, так как я не знаю много о Java и JSP.
сказавший, что: символы на правой стороне Вашей таблицы являются кодировкой UTF-8 левой стороны. Таким образом, где-нибудь в Вашем коде, Вы интерпретируете байты как латинский 1 (или независимо от того, что Ваша кодировка по умолчанию), где они на самом деле представляют закодированные символы UTF-8...
Просто произвольное предположение. Попробуйте эту внутреннюю часть Ваш JSP/Servlet:
if(request.getCharacterEncoding() == null) {
request.setCharacterEncoding("UTF-8");
}
необходимо быть уверены, что корректное кодирование передается сервлету.
Проблема состоит в том, что информация, отправленная браузером, не имеет четко определенного кодирования и нет никакого пути в HTTP для определения его.
К счастью большинство браузеров будет использовать кодирование страницы, которая содержит форму. Таким образом, при использовании UTF-8 на всех страницах затем большинство браузеров отправит все данные в кодировке UTF-8 также (и примеры показывают, что это точно, как это отправляется).
, К сожалению, наиболее распространенные серверы JAVA-приложения действительно не обрабатывают случай (не может обвинить их, это - главным образом догадки так или иначе).
можно сказать серверу приложений рассматривать любой вход как UTF-8 путем вызова
request.setCharacterEncoding("UTF-8");
На основе стиля кодирования и платформ, которые Вы используете, это могло бы быть к последнему, когда поток управления достигает Вашего кода, таким образом, могло бы быть возможно сделать это в javax.servlet.Filter
.
Я думаю, что проблема могла бы состоять в том, что браузер не указывает сообщение формы, чтобы быть utf-8. Существует много для чтения о сообщениях формы и кодировке в сети, несколько веб-платформ обеспечивают фильтры кодировки символов для 'устранения' этой проблемы, возможно точно так же, как идея для фиксации была - посмотрите, например http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/web/filter/CharacterEncodingFilter.html
Попытайтесь установить URIEncoding в {jboss.server}/deploy/jboss-web.deployer/server.xml.
Исключая:
<Connector port="8080" address="${jboss.bind.address}"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
Do you use RequestDumper? If it is configured in deploy/jboss-web.deployer/server.xml then try to remove it and then test your encoding.