• STATISTIQUES
  • Il y a eu un total de 0 membres et 39270 visiteurs sur le site dans les dernières 24h pour un total de 39 270 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges
    [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking
    [EN] This is legal
    Basic: 10, Realistic: 5, Programming: 1, Bonus: 11, SQL: 2, Encryption: 6, Application: 4, User Contributed: 3
    Challenges
    [EN] Gekko
    Site de challenge présenter sous la forme d'une quête. Vous êtes un agent secret qui répond sous le nom...
    Challenges
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    Hacking
    [EN] social-engineer
    Site dédié au Social Engineering en général.
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
algo : trouver le nombre le 'pattern' le plus frequent
05-12-2012, 22h32 (Modification du message : 05-12-2012, 22h36 par lesk8vaincra.)
Message : #7
lesk8vaincra Hors ligne
Newbie
*



Messages : 7
Sujets : 2
Points: 0
Inscription : Dec 2012
RE: algo : trouver le nombre le 'pattern' le plus frequent
Bon jviens de me lancer dans un ptit code, testé mais pas forcémment parfaitement fonctionnel ou même optimisé, je ne veut absolument pas prétendre qu'il te conviendra mais ca pourrait te fournir d'éventuelles pistes:


Code :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication2;

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
*
* @author LSV
*/
public class JavaApplication2 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        HashMap<String, Integer> occurences = new HashMap<String, Integer>();

        String chaine = "aaaaaaaaaaaaaaaaaaaaaaabbbcccddddeeee";
        for (int i = 2; i < (chaine.length() / 2); i++) {
            // i indique la longueur de la séquence cherchée
            for(int j=0;(j+i)<chaine.length();j++){
                String sousChaine = chaine.substring(j, j+i);
                occurences.put(sousChaine, stringOccur(chaine, sousChaine));              
            }
        }
        
        int maxOccurs = 0;
        String chaineFrequente = "";
        for (Map.Entry<String, Integer> entry : occurences.entrySet()) {
            System.out.println("Nombre d'occurence de la chaine '"+entry.getKey()+"': "+entry.getValue());
            if(entry.getValue()>maxOccurs){
                maxOccurs = entry.getValue();
                chaineFrequente = entry.getKey();
            }
        }
        
        System.out.println("La chaine la plus fréquente est: '"+chaineFrequente+"' et elle apparait "+maxOccurs+" fois.");
    }

    /**
     * Renvoie le nombre d'occurrences de la sous-chaine de caractères spécifiée
     * dans la chaine de caractères spécifiée
     *
     * @param text chaine de caractères initiale
     * @param string sous-chaine de caractères dont le nombre d'occurrences doit
     * etre compté
     * @return le nombre d'occurrences du pattern spécifié dans la chaine de
     * caractères spécifiée
     */
    public static final int stringOccur(String text, String string) {
        return regexOccur(text, Pattern.quote(string));
    }

    /**
     * Renvoie le nombre d'occurrences du pattern spécifié dans la chaine de
     * caractères spécifiée
     *
     * @param text chaine de caractères initiale
     * @param regex expression régulière dont le nombre d'occurrences doit etre
     * compté
     * @return le nombre d'occurrences du pattern spécifié dans la chaine de
     * caractères spécifiée
     */
    public static final int regexOccur(String text, String regex) {
        Matcher matcher = Pattern.compile(regex).matcher(text);
        int occur = 0;
        while (matcher.find()) {
            occur++;
        }
        return occur;
    }
}

Les fonctions regexOccur et StringOccur ont été trouvées la:
http://www.developpez.net/forums/d183810...ce-string/

A toi d'implémenter la méthode pour déterminer quelle est la meilleure sous-chaine a choisir en fonction de sa longueur et de sa fréquence.
+1 (0) -1 (0) Répondre


Messages dans ce sujet
RE: algo : trouver le nombre le 'pattern' le plus frequent - par lesk8vaincra - 05-12-2012, 22h32

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut