Вот метод, который дает вам все комбинации заданного размера из строки случайной длины. Подобно решению quinmars, но работает для разнообразного ввода и k.
Код можно изменить для обертывания, т. Е. 'Dab' из ввода 'abcd' wk = 3.
public void run(String data, int howMany){
choose(data, howMany, new StringBuffer(), 0);
}
//n choose k
private void choose(String data, int k, StringBuffer result, int startIndex){
if (result.length()==k){
System.out.println(result.toString());
return;
}
for (int i=startIndex; i<data.length(); i++){
result.append(data.charAt(i));
choose(data,k,result, i+1);
result.setLength(result.length()-1);
}
}
Выход для «abcde»:
abc abd abe acd ace ade bcd bce bde cde
blockquote>
Для начала вам нужен SMTP-сервер. Он необходим, чтобы иметь возможность отправлять электронную почту. Точно так же, как вам нужен HTTP-сервер, чтобы иметь возможность обслуживать веб-сайт. У вас, очевидно, уже есть HTTP-сервер (с сервлетконтейнером), но у вас еще не настроен SMTP-сервер.
Вы можете воспользоваться SMTP-сервером, связанным с вашим существующим аккаунтом электронной почты, например, аккаунтом вашего интернет-провайдера или публичными почтовыми ящиками, такими как Gmail, Yahoo и т.д. Подробности подключения SMTP можно найти в их документации. Обычно достаточно знать имя хоста и номер порта. имя пользователя/пароль такие же, как и для вашей учетной записи электронной почты.
Имя хоста и номер порта должны быть установлены как свойства SMTP для JavaMail:
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.host", "smtp.example.com"); // smtp.gmail.com?
properties.put("mail.smtp.port", "25");
Имя пользователя/пароль должны быть использованы в аутентификаторе
следующим образом:
properties.put("mail.smtp.auth", "true");
Authenticator authenticator = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("yourusername", "yourpassword");
}
};
Затем вы можете получить почтовую сессию следующим образом:
Session session = Session.getDefaultInstance(properties, authenticator);
С учетной записью вашего провайдера или публичными почтовыми ящиками, вы, однако, ограничены в использовании вашего собственного адреса в поле From
письма и обычно также в количестве писем, которые вам разрешено отправлять через определенные промежутки времени. Если вы хотите обойти это, то вам нужно установить свой собственный SMTP-сервер, например Apache James, который основан на Java, или Microsoft Exchange и так далее.
В конце концов, я советую вам пройти через учебник по JavaMail, чтобы лучше понять суть.